首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

error LNK2001: unresolved external symbol _WHX_Close@0 这个异常如何解决

2013-08-16 
error LNK2001: unresolved external symbol _WHX_Close@0 这个错误怎么解决大家帮忙看下这个错误怎么解决

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都导出了哪些函数。

热点排行