首页新闻找找看学习计划

vs c++ 静态库 ,dll

0
悬赏园豆:15 [待解决问题]

vs中,静态库已经编译好了,然后编译动态库时竟然提示静态库中有无法解析的外部符号,这是怎么回事?提示的函数的头文件也包含进去了

xianyuchuangtianxia的主页 xianyuchuangtianxia | 初学一级 | 园豆:16
提问于:2016-10-30 20:17
< >
分享
所有回答(1)
0

原因:静态库只是 obj 文件的集合,不会连接的。编译动态库时就需要连接了。
例如:你的代码里用到了函数 Test,但是缺少 Test 函数的实现代码。
      那么编译生成静态库时不会连接 Test 的二进制代码,所以可以编译成功。
      编译生成动态库时需要连接 Test 的二进制代码,所以编译失败。
解决:需要连接提示函数所在的 lib 文件。比如:提示无法连接 MessageBox 函数,
      通过查询 MSDN 可知这个函数的二进制代码在 user32.lib 里。请增加如下代码:
      #pragma comment(lib,"user32.lib")
      即连接时使用 user32.lib 这个库文件

hanford | 园豆:202 (菜鸟二级) | 2016-11-03 14:38
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册