老生常谈之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问题,遇到问题不要急躁,细心仔细对比,首先确认链接问题,然后是否成功导出,查看导出和调用接口差异,确认各个可能引起链接错误的配置信息等等,一步一步缩小范围。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-04 09:06:19

老生常谈之widows下link错误的相关文章

Widows下Faster R-CNN的MATALB配置(GPU)

目录 1. 准备工作 2. VS2013编译Caffe 3. Faster R-CNN的MATLAB源码测试 说在前面,这篇是关于Windows下Faster R-CNN的MATLAB配置,GPU版本:CPU版本见:Widows下Faster R-CNN的MATALB配置(CPU): 相比较来说,CPU版本相对容易一些,因为涉及到GPU的计算,还需要配置CUDA以及CuDNN: 下面将分成三个部分进行介绍: 准备工作:下载caffe.faster rcnn源码.安装cuda.cudnn: VS2

Oracle下ORA-00119错误的解决

Oracle在修改参数后启动时报下列错误 [email protected] >startupORA-00119: invalid specification for system parameter DISPATCHERSORA-00111: invalid attribute DISPPATCHERS 解决方法 1.创建pfile [email protected] >create pfile from spfile; File created. 2.修改pfile [[email pro

HTTP 499状态码 nginx下499错误及其解决方法

HTTP 499 状态码 nginx下 499错误: HTTP 499 状态码 nginx下 499错误 日志记录中HTTP状态码出现499错误有多种情况,我遇到的一种情况是nginx反代到一个永远打不开的后端,就这样了,日志状态记录是499.发送字节数是0. 老是有用户反映网站系统时好时坏,因为线上的产品很长时间没有修改,所以前端程序的问题基本上可以排除,于是就想着是Get方式调用的接口不稳定,问了相关人员,说没有问题,为了拿到确切证据,于是我问相关人员要了nginx服务器的日志文件(awst

【转】HTTP 499 状态码 nginx下 499错误

HTTP 499 状态码 nginx下 499错误 日志记录中HTTP状态码出现499错误有多种情况,我遇到的一种情况是nginx反代到一个永远打不开的后端,就这样了,日志状态记录是499.发送字节数是0. 老是有用户反映网站系统时好时坏,因为线上的产品很长时间没有修改,所以前端程序的问题基本上可以排除,于是就想着是Get方式调用的接口不稳定,问了相关人员,说没有问题,为了拿到确切证据,于是我问相关人员要了nginx服务器的日志文件(awstats日志),分析后发现日志中很多错误码为499的错误

mysql 在linux下安装错误的问题

[[email protected] fangwei]# cd mysql-connector-c-6.0.2-linux-sles10-x86-64bit [[email protected] mysql-connector-c-6.0.2-linux-sles10-x86-64bit]# cmake -DCMAKE_INSTALL_PREFIX=/opt/mysql/ -DMYSQL_DATADIR=/opt/mysql/data -DMYSQL_UNIX_ADDR=/opt/mysql/d

老生常谈:ie6下,a标签href设置javascript:void(0);后绑定的click失效

老生常谈:ie6下,a标签href设置javascript:void(0);后绑定的click事件,如果有form表单提交或跳转等事件,会失效!举例: <a id="id_back" href="javascript:void(0);" title="返回管理">返 回</a> $("#id_back").click(function(){         $("#id_frm").

IIS下自定义错误页面配置的两种方式(亲测可行)--IIS服务器

网站自定义错误页面的设置,大家应该都知道它的重要性……不多说,下面带大家一步步在IIS下设置网站自定义错误页面…… 1.首先进入你的网站主页,找到[错误页](注意是IIS下的错误页不是.NET错误页),双击[错误页] 2.这样就进入了错误页面,点击[编辑]或者双击状态代码行,打开“编辑自定义错误页面” 3.填写状态码,响应操作处选择第二项[在此网站上执行],输入URL 4.查看错误页面相对根目录的位置,按照示例填写就可以的.然后依次设置其它页面 5.当然还可以通过修改配置文件(web.confi

idea下git 错误 error: unable to read askpass response from &#39;C:\Users\ASUS\.IntelliJIdea2019.1\system\tmp\intellij-git-askpass.bat&#39; bash: /dev/tty: No such device or address

解决方法: url = https://[用户名]:[密码]@github.com/KingBoyAndGirl/Project.git idea下git 错误 error: unable to read askpass response from 'C:\Users\ASUS\.IntelliJIdea2019.1\system\tmp\intellij-git-askpass.bat' bash: /dev/tty: No such device or address 原文地址:https:

iOS:Xcode的beta下编译低版本项目时,出现的Link错误( &quot;_fwrite$UNIX2003&quot;, referenced from:)

开发的项目多了,对于一个i386的错误,处理起来应该是得心应手的,可是仔细看来,跟之前遇到i386的错误还不大一样,直接搜i386是搜不到该问题解决的方法,你要是搜“Undefined symbols for architecture i386”会搜出一些答案,但也不是很多,并且能不能解决当前遇到的问题,还得自己试过后才知道行还是不行.这里我就给大家说一下我当时搜到的一些解决方法: 1.缺少类库,自己项目缺不缺少类库自己还是知道的,看上面的错误也像是缺少类库,所以这个答案直接抛 弃掉 2.这个就