我正在使用libcurl,并且在VC++ 10中遇到以下类型的链接器错误.
1>main.obj : error LNK2019: unresolved external symbol __imp__curl_easy_strerror referenced in function "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl curl_httpget(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?curl_httpget@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@ABV12@@Z)
Run Code Online (Sandbox Code Playgroud)
如何摆脱函数名称前面的imp前缀?我链接到正确的lib,正确的路径等.
Sum*_*uma 57
在__imp__
当你链接到一个DLL出现前缀.链接到静态链接库时不会出现.很可能生成的代码是链接到DLL导入库,但您已将其与静态库链接.
使用时标记导入的函数时添加前缀__declspec(dllimport)
- 确保在未链接DLL时导入未使用此参数.
如果使用向导生成的项目 - 请在project properties -> C/C++ -> Code Generation
部分中选中"运行时设置"值.
默认情况下,它通常具有"多线程DLL"值.您需要多线程/ MT和多线程调试/ MTd值.
您正在使用头文件来定义函数原型,并使用指定符进行评估 __declspec(dllimport)
您需要重新定义正在评估此语句的语句(将其设置为空),或者完全使用不同的头文件.
通常你会看到这样的代码:
#ifdef FOO_EXPORTS
#define DLLSPEC __declspec(dllexport)
#else
#define DLLSPEC __declspec(dllimport)
#endif
...
DLLSPEC bool foo(int bar);
Run Code Online (Sandbox Code Playgroud)
使用定义的FOO_EXPORTS编译项目将使用一种模式,没有它将使用另一种模式.