老生常谈之widows下link错误

         由于之前一直从事linux下的嵌入式开发,对于windows下的工程环境配置,lib链接,dll链接等等都不是很敏感。经过一些时间的摸索和实践,基本的一些配置选项都玩得差不多了。对于常见的错误都能知道怎么去下手解决,但最近把项目把移植到64位操作上,重新编译所有的dll的时候。发现几个link问题还是不能很快的解决,几个链接的错误摸索了好几天,最后都是因为配置问题引起的,各种郁闷,原来VS下面果真没有linux来的那般方便。跑偏了,言归正传,总结一下遇到的几种比较典型link的错误,
1、查看库的引导路径以及库的名称,如果是导入DLL的话,注意DLL导出接口的lib库文件。配置如下:

                                         

  左边配置好需要的路径,右边加载需要的库文件的名称即可。
一般情况下如果配置好上面的情况并且在工程目录加入dll的话,程序就能正常运行了,这也是大多数论坛上回复很多人link错误的答案。但是有时候其他的配置没有匹配的话,也会link错误的。

2、注意宽字节问题。先来看看我自己链接时候的错误

     

  出现这个错误的时候,刚开始我也是莫名其妙的,因为我对于第一条中提到的配置问题,我都已经设置好了,确认没有问题的。后来怀疑编译这个开源的时候没有成功导出接口,所以又借助Depends看了下,如下图:

 

发现接口也都成功导出了呀,并没有什么问题。后来思量再三,问了下老大,结果他看了半天也是无从下手。后面没有办法,老大竟然对比了函数导出名称后面的数字竟然发现是不同的,我也仔细看了,红色框框部分,确实不同,姜果然是老的辣,一语击中要害。原来我生成的dll设置了宽字节,而链接这个dll的时候不需要没有,导致出现链接不上,又来修改了设置如下:


修改后,编译连接成功。纠结了蛮久的问题终于解决。这也是link错误的一个比较隐藏的错误。

当然在其中还有另外两个地方的设置,也会引起link的错误的。

3、字节编码的设置问题

   

4、RunTime Library的设置问题

 

各个选项的具体说明可以参考David的博客,说的比较清楚,这里的设置问题也会引起link错误。

            最后总结下,link错误千千万,很多情况都会出现各种纠结的link问题,遇到问题不要急躁,细心仔细对比,首先确认链接问题,然后是否成功导出,查看导出和调用接口差异,确认各个可能引起链接错误的配置信息等等,一步一步缩小范围。


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

max_min_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值