gpt4 book ai didi

C++ : Function return String in Static Library give Error : expected '=' , ',' , ';' , 'asm' 或 '__attribute__' token 之前的 ':'

转载 作者:行者123 更新时间:2023-11-28 02:07:46 25 4
gpt4 key购买 nike

大家好,我正在学习如何在 C++ 中创建静态库,不幸的是我下面的代码令人头疼,即使在谷歌搜索了几个小时后我也找不到问题所在。遵循很多建议但没有成功。

ercisstaticlib.h

#ifndef __ERCISSTATICLIB__
#define __ERCISSTATICLIB__
#include <string>

extern "C" std::string GetDatabaseName() ;

#endif // ERCISSTATICLIB_H_INCLUDED

主要.cpp

std::string GetDatabaseName()
{
return "Testing";
}

错误信息

=== Build: Debug in ErcisLib (compiler: GNU GCC Compiler) ===
error: expected '=', ',', ';', 'asm' or '__attribute__' before ':' token
=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===

最佳答案

std::string 是一个类。

extern c 仅支持 C 类型,因为它导致函数具有 C 签名。

C 签名意味着没有类,因为 C 中没有类,只有 C++。

你应该使用:

extern "C" const char* GetDatabaseName() ;

但你需要注意不要返回指向局部变量的指针。

您还有其他选择:您可以放弃 extern "C" 并继续使用:

std::string GetDatabaseName();

如果您要将您的库与 C++ 链接,则没有理由使用 extern c。但是如果你需要和C链接,你应该选择第一个选项。

关于C++ : Function return String in Static Library give Error : expected '=' , ',' , ';' , 'asm' 或 '__attribute__' token 之前的 ':',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36836191/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com