您的位置:首页 > 编程语言 > C语言/C++

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的也同样可以。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐