读书人

error LNK2001: unresolved external

发布时间: 2013-08-16 14:29:57 作者: rapoo

error LNK2001: unresolved external symbol _WHX_Close@0 这个错误怎么解决
大家帮忙看下这个错误怎么解决
Linking...
main.obj : error LNK2001: unresolved external symbol _WHX_Close@0
main.obj : error LNK2001: unresolved external symbol _WHX_Read@8
main.obj : error LNK2001: unresolved external symbol _WHX_OpenEx@8
main.obj : error LNK2001: unresolved external symbol _WHX_Done@0
main.obj : error LNK2001: unresolved external symbol _WHX_Init@4
Debug/main.exe : fatal error LNK1120: 5 unresolved externals
Error executing link.exe.

main.exe - 6 error(s), 0 warning(s)

[解决办法]
一般出现lnk错误都是库文件没添加造成的。
项目--》属性--》配置属性--》链接器-》输入--》附加依赖项
在其中加入所需库文件,同时在“链接器--》常规--》附加库目录”中填入相应库名。
这样应该就可以


这样还不行的话,
那源文件是.c改成.cpp文件。如果是.cpp文件改成.c文件
试试
[解决办法]
如果用了第额外的库,检查有没有配置lib的路径
[解决办法]

引用:
1.提供头文件+到处符号文件(lib),使用隐式加载
2.使用动态加载


到处->导出
[解决办法]
上代码,然后告诉我们你用了哪些dll文件,这些dll文件在什么位置,这些dll的导入库lib文件有没有
[解决办法]
这是调用约定不对应造成的。。。你头文件里应该使用C调用约定_cdecl而不是标准调用约定

C调用约定使用时对于函数名的修饰规则是 只在前面加下划线
标准调用约定对于函数名的修饰规则是 在前面加下划线后面跟@符号再加上参数的字节总数
[解决办法]
main.cpp
#pragma comment(lib, "whxapi.lib") //加上dll的文件名
[解决办法]
引用:
这是调用约定不对应造成的。。。你头文件里应该使用C调用约定_cdecl而不是标准调用约定

C调用约定使用时对于函数名的修饰规则是 只在前面加下划线
标准调用约定对于函数名的修饰规则是 在前面加下划线后面跟@符号再加上参数的字节总数
当然可能还需要一个dll对应的lib文件来得到函数的实际地址;或者使用LoadLibrary加载dll,然后使用GetProcAddress来获得所需要函数的实际地址。
------解决方案--------------------


用命令
dumpbin /EXPORTS whxapi.lib
查看whxapi.lib都导出了哪些函数。

读书人网 >C++

热点推荐