VS常见链接问题解决方案大全(LNK1112、LNK2109、LNK1123)

使用VS进行编程时经常会遇到类似LNK1112、LNK2109、LNK1123这些问题,这里做一下总结。
1、LNK1112问题
问题描述:模块计算机类型“X86”与目标计算机类型“x64”冲突
这里写图片描述
原因:程序运行时链接所需的dll文件时发现所需的DLL为X64类型而实际编译出来的却是X86类型,因此报错。
解决方案:
1)检查系统是否已经安装VS下X64编译能力
在控制面板中找到VS2008,选择卸载或更改,如下:
这里写图片描述
之后看到如下界面:
这里写图片描述
之前遇到过这里的X64编译器和工具是灰色的没有安装的情况,所以安装vs的时候还是要注意这些小的细节,如果已经安装了可以跳过这一步了。

2)检查VS本身的包含路径是否正确设置为64位:
在VS中依次打开"工具”->“选项”->“项目和解决方案”->“VC++目录”,在平台这里选择X64,然后更改依赖的头文件,库文件和可执行文件目录:
这里写图片描述
注意不要混淆win32和x64的设置,一般在实际的项目中这里一般对应不同位数的操作系统进行不同的版本编译,比如下面的路径是X64的:
这里写图片描述
3)检查VS工程的配置是否正确 :
在需要编辑的工程上右键进入属性,如下:
这里写图片描述
如果需要的平台在下拉列表中没有,可以进行新建
这里写图片描述
上述步骤OK后回到属性页,选择“链接器”->“高级”,将目标计算机设置为MachineX64:
这里写图片描述
重新生成VS工程,一般是可以正常编译的。
2、LNK2109问题:
问题报错示例:

 error LNK2019: 无法解析的外部符号 "public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __thiscall CArchiveCryption::DeCryptstring_2(char *)" (?DeCryptstring_2@CArchiveCryption@@QAE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAD@Z),该符号在函数 "public: static int __cdecl CActor::CheckTrail(void)" (?CheckTrail@CActor@@SAHXZ) 中被引用    Actor.obj

1)所在工程下缺少必要的头文件和源文件。可以查看一下这段错误中描述的类似CheckTrail()之类的函数所在的源文件和头文件是否已经添加到了该工程中,若不存在添加之后再次进行编译。
2)缺少必要的头文件,这里需要在工程上右键属性列表之后找到如下位置添加所需依赖的库:
这里写图片描述
再次进行编译。
3、LNK1123问题:
问题详情示例:
这里写图片描述
遇到这个问题一般需要先对工程右键进行清理。如果清理之后依旧编译仍然报这个错误,一边是因为cvtres.exe这个文件与使用的VS版本不匹配的原因。
这里写图片描述

参考博文:
http://blog.csdn.net/holybin/article/details/50881475

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Coding13

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

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

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

打赏作者

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

抵扣说明:

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

余额充值