VC++里对32和64版本链接的不同处理
2015-01-20 15:07
232 查看
遇到个奇怪问题,有个第三方提供的动态链接库包括了ncmapi.lib,ncmapi.dll, ncmapi.h三个文件。
我用MFC写一个测试程序作为调用方,使用下面的声明时,得到以下链接错误
extern "C"_declspec(dllimport)ncm_launcher_t* ncm_launcher_new();
Error 2 error LNK2001: unresolved external symbol __imp__ncm_launcher_new
为了查看第三方库,我用dumpbin-exports ncmapi.lib得到下面的结果,可以看到库文件里包含了函数ncm_launcher_new,但函数名前面没有任何前缀
Microsoft (R) COFF/PE DumperVersion 12.00.21005.1
Copyright (C) MicrosoftCorporation. All rights reserved.
Dump of file ncmapi.lib
File Type: LIBRARY
Exports
ordinal name
ncm_launcher_new
。。。。。。
Summary
C0 .debug$S
14 .idata$2
14 .idata$3
8 .idata$4
8 .idata$5
C .idata$6
主程序要找带前缀的函数,库函数不带前缀,当然link不过。根据我的经验,以前类似情况里第三方库查看到的函数是带有下划线前缀的。这个不带前缀的版本是怎么来的?
原来这套库提供了32位和64位两种版本,32位的带前缀,64的不带。所以把库换成32位的,问题解决了。或者在configration manager里new一个x64的设置,把主程序变成64的也同样可以。
我用MFC写一个测试程序作为调用方,使用下面的声明时,得到以下链接错误
extern "C"_declspec(dllimport)ncm_launcher_t* ncm_launcher_new();
Error 2 error LNK2001: unresolved external symbol __imp__ncm_launcher_new
为了查看第三方库,我用dumpbin-exports ncmapi.lib得到下面的结果,可以看到库文件里包含了函数ncm_launcher_new,但函数名前面没有任何前缀
Microsoft (R) COFF/PE DumperVersion 12.00.21005.1
Copyright (C) MicrosoftCorporation. All rights reserved.
Dump of file ncmapi.lib
File Type: LIBRARY
Exports
ordinal name
ncm_launcher_new
。。。。。。
Summary
C0 .debug$S
14 .idata$2
14 .idata$3
8 .idata$4
8 .idata$5
C .idata$6
主程序要找带前缀的函数,库函数不带前缀,当然link不过。根据我的经验,以前类似情况里第三方库查看到的函数是带有下划线前缀的。这个不带前缀的版本是怎么来的?
原来这套库提供了32位和64位两种版本,32位的带前缀,64的不带。所以把库换成32位的,问题解决了。或者在configration manager里new一个x64的设置,把主程序变成64的也同样可以。
相关文章推荐
- VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结
- VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结
- VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结
- 转:VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结
- VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结
- VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结
- VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结
- VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结
- VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结
- VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结
- VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结
- 转载:VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结
- VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结
- VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结
- 转:VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结
- VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结
- VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结
- VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结
- VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结
- VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结