社区
工具平台和程序库
帖子详情
VC2010遇到的LNK2001 2019错误
mrpeterchen
2011-12-26 08:26:43
这样的LNK错误之前遇到过,多半是因为没加LIB文件导致的。
可现在问题有些不同:
在win32编译器下,没有这样的错误,可以成功生成EXE文件。换X64编译器,立马产生一堆这样的错误
我的目的是想测试下代码是否可以移植到WIN64位系统上。
可是用X64编译器编译,出现那么多链接错误。
下面是我的编译环境:
OS: WIN 7 64位
开发工具:VC2010(工具本身是32位的,不过我装了2个编译器,一个WIN32,一个X64,为了测试代码可移植性)
跪求高人帮忙啊
...全文
741
24
打赏
收藏
VC2010遇到的LNK2001 2019错误
这样的LNK错误之前遇到过,多半是因为没加LIB文件导致的。 可现在问题有些不同: 在win32编译器下,没有这样的错误,可以成功生成EXE文件。换X64编译器,立马产生一堆这样的错误 我的目的是想测试下代码是否可以移植到WIN64位系统上。 可是用X64编译器编译,出现那么多链接错误。 下面是我的编译环境: OS: WIN 7 64位 开发工具:VC2010(工具本身是32位的,不过我装了2个编译器,一个WIN32,一个X64,为了测试代码可移植性) 跪求高人帮忙啊
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
24 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
东西北
2013-04-16
打赏
举报
回复
我也遇到这个问题了,lz解决了吗?怎么弄的?
mrpeterchen
2012-01-13
打赏
举报
回复
这个链接咋看啊,放IE里回车,看不了啊
高手来帮忙啊
小弟感觉好无助啊~
赵4老师
2012-01-12
打赏
举报
回复
Visual Studio
64 位应用程序
ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_vs64/html/fd4026bc-2c3d-4b27-86dc-ec5e96018181.htm
mrpeterchen
2012-01-12
打赏
举报
回复
还是没解决,继续等高手来救我~
mrpeterchen
2012-01-09
打赏
举报
回复
再弱弱的问下,log存哪了呀? WIN 7的系统
mrpeterchen
2012-01-09
打赏
举报
回复
哦~~~ 我再试试
多谢高手指点啊 哈
xunxun
2012-01-08
打赏
举报
回复
kernel32.lib那些只是一个名字而已,有32位也有64位的
所以你这个不好说了
log文件里写的啥呢
你可以直接套用他的命令行在cmd里输入(开始菜单里找 Visual Studio x64 兼容工具命令提示(2010))
到你的构建目录
输入cl 和 link 确定是否是64位
link /OUT:"D:\Projects\ProtoDriWinPcap\x64\Debug\ProtoDriWinPcap.dll" /INCREMENTAL /NOLOGO /DLL "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" /DEF:"ProtoDriWinPcap.def" /MANIFEST /ManifestFile:"x64\Debug\ProtoDriWinPcap.dll.intermediate.manifest" /ALLOWISOLATION /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:"D:\Projects\ProtoDriWinPcap\x64\Debug\ProtoDriWinPcap.pdb" /SUBSYSTEM:WINDOWS /PGD:"D:\Projects\ProtoDriWinPcap\x64\Debug\ProtoDriWinPcap.pgd" /TLBID:1 /DYNAMICBASE /NXCOMPAT /MACHINE:X64 /ERRORREPORT:QUEUE ...obj...
后面跟你编译生成的obj
我怀疑你IDE出了什么问题,虽然设置是这样,可是调用的link不对……
only_lonely
2012-01-06
打赏
举报
回复
"kernel32.lib" "user32.lib" "gdi32.lib"
既然都已经是64位了,为何还要用 32 的lib?
mrpeterchen
2012-01-06
打赏
举报
回复
那要咋改类? 上哪找64的LIB去类。。。晕哈
高手们,帮人帮到底,送佛送到西啊
mrpeterchen
2012-01-05
打赏
举报
回复
哦,多谢指点,我看看先,今天晚上把命令行贴出来
mrpeterchen
2012-01-05
打赏
举报
回复
连接器命令行如下:
X64连接器命令行如:
/OUT:"D:\Projects\ProtoDriWinPcap\x64\Debug\ProtoDriWinPcap.dll" /INCREMENTAL /NOLOGO /DLL "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" /DEF:"ProtoDriWinPcap.def" /MANIFEST /ManifestFile:"x64\Debug\ProtoDriWinPcap.dll.intermediate.manifest" /ALLOWISOLATION /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:"D:\Projects\ProtoDriWinPcap\x64\Debug\ProtoDriWinPcap.pdb" /SUBSYSTEM:WINDOWS /PGD:"D:\Projects\ProtoDriWinPcap\x64\Debug\ProtoDriWinPcap.pgd" /TLBID:1 /DYNAMICBASE /NXCOMPAT /MACHINE:X64 /ERRORREPORT:QUEUE
******************************************************************************
WIN32连接器如下:
/OUT:"D:\Projects\ProtoDriWinPcap\Debug\ProtoDriWinPcap.dll" /INCREMENTAL /NOLOGO /DLL "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" /DEF:"ProtoDriWinPcap.def" /MANIFEST /ManifestFile:"Debug\ProtoDriWinPcap.dll.intermediate.manifest" /ALLOWISOLATION /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:"D:\Projects\ProtoDriWinPcap\Debug\ProtoDriWinPcap.pdb" /SUBSYSTEM:WINDOWS /PGD:"D:\Projects\ProtoDriWinPcap\Debug\ProtoDriWinPcap.pgd" /TLBID:1 /DYNAMICBASE /NXCOMPAT /MACHINE:X86 /ERRORREPORT:QUEUE
高人帮忙看下吧,到底问题出在哪,或者教下我该如何跟踪这类问题?
多谢啦
xunxun
2012-01-04
打赏
举报
回复
我记得他在本地会生成log文件的,你可以看看
或者可以查看
工程属性-linker-命令行
log应该记录的更准确些
xunxun
2012-01-04
打赏
举报
回复
还是没看见你的linker命令行
属性不可能一致,至少machine的target是不一样的
所以看你详细的命令行就知道哪里错了
mrpeterchen
2012-01-04
打赏
举报
回复
LINKER命令行在哪呢? 对VC工具还是不太熟呢
mrpeterchen
2012-01-03
打赏
举报
回复
继续等待
mrpeterchen
2011-12-28
打赏
举报
回复
继续跪求,高手帮忙~~
ouyh12345
2011-12-27
打赏
举报
回复
两个版本的lib不同
老邓
2011-12-27
打赏
举报
回复
64位的lib、32位的lib,不要混用。
mrpeterchen
2011-12-27
打赏
举报
回复
我检查了32DEBUG的属性,里头所有参数和64DEBUG属性里是一致的
包括可执行文件目录,包含目录,库目录等
例如:
库目录:
WIN32 DEBUG = $(VCInstallDir)lib;$(VCInstallDir)atlmfc\lib;$(WindowsSdkDir)lib;$(FrameworkSDKDir)\lib;D:\Projects\WpdPack_4_1_2\WpdPack\lib;
X64 DEBUG = $(VCInstallDir)lib;$(VCInstallDir)atlmfc\lib;$(WindowsSdkDir)lib;$(FrameworkSDKDir)\lib;D:\Projects\WpdPack_4_1_2\WpdPack\lib\x64;
楼上2位说的问题,我也确实有考虑过这个可能性,但不知道怎么跟踪下去?
就比如 error LNK2019: 无法解析的外部符号 __imp_malloc,我想不论32位还是64位,他们应该都有malloc这个API吧。 难道X64下,没这个API的?还是叫其他名字了?
我其实还考虑过另外1个问题,就是函数调用约定的问题。
查了下汇编资料,32汇编调用函数,好像是STDCALL约定,函数参数会压入栈内,而64汇编调用函数时,前4个函数形参会放入4个寄存器内,之后如果还有参数才会压入栈,也就是所谓的FASTCALL约定。
继续跪求,这些链接错误,会不会是由于32位编译器和X64编译器调用约定不同造成的?
函数调用约定到底是CPU架构决定呢,还是编译器决定,还是操作系统?
我可以认为更改调用约定吗?
继续等ING。
高手来啊
mrpeterchen
2011-12-27
打赏
举报
回复
我检查了32DEBUG的属性,里头所有参数和64DEBUG属性里是一致的
包括可执行文件目录,包含目录,库目录等
例如:
库目录:
WIN32 DEBUG = $(VCInstallDir)lib;$(VCInstallDir)atlmfc\lib;$(WindowsSdkDir)lib;$(FrameworkSDKDir)\lib;D:\Projects\WpdPack_4_1_2\WpdPack\lib;
X64 DEBUG = $(VCInstallDir)lib;$(VCInstallDir)atlmfc\lib;$(WindowsSdkDir)lib;$(FrameworkSDKDir)\lib;D:\Projects\WpdPack_4_1_2\WpdPack\lib\x64;
楼上2位说的问题,我也确实有考虑过这个可能性,但不知道怎么跟踪下去?
就比如 error LNK2019: 无法解析的外部符号 __imp_malloc,我想不论32位还是64位,他们应该都有malloc这个API吧。 难道X64下,没这个API的?还是叫其他名字了?
我其实还考虑过另外1个问题,就是函数调用约定的问题。
查了下汇编资料,32汇编调用函数,好像是STDCALL约定,函数参数会压入栈内,而64汇编调用函数时,前4个函数形参会放入4个寄存器内,之后如果还有参数才会压入栈,也就是所谓的FASTCALL约定。
继续跪求,这些链接错误,会不会是由于32位编译器和X64编译器调用约定不同造成的?
函数调用约定到底是CPU架构决定呢,还是编译器决定,还是操作系统?
我可以认为更改调用约定吗?
继续等ING。
高手来啊
加载更多回复(2)
VC++链接
错误
分析解决
学习VC++时经常会
遇到
链接
错误
LN
K2
001
,该
错误
非常讨厌,因为对于编程者来说,最 好改的
错误
莫过于编译
错误
,而一般说来发生连接
错误
时,编译都已通过。产生连接
错误
的原因非常多,尤其
LN
K2
001
错误
,常常使人不明其所以然。如果不 深入地学习和理解VC++,要想改正连接
错误
LN
K2
001
非常困难。
关于vc6.0连接时的LIBCD.lib问题
学习VC++时经常会
遇到
链接
错误
LN
K2
001
,而一般说来发生连接
错误
时,编译都已通过。产生连接
错误
的原因非常多,尤其
LN
K2
001
错误
,常常使人不明其所以然。这里给了一些解决办法
fatal error
LN
K1104: 无法打开文件“libc.lib”的解决方法
今天,编译程序的时候,意外
遇到
了一个
错误
,就是VS2008一直提示:fatal error
LN
K1104: 无法打开文件“libc.lib”,后来在网上查找了很多资料,终于知道原因了。。。如果将用低版本的VC开发的项目,拿到高版本的VC开发环境上去编译,链接时也许会触发
LN
K1104
错误
。解决方案是链接时忽略此库,在此提供两种解决方案:Project | Properties | Configuration Properties | Linker | Input Ignore Specific Library: libc.lib解决如下:项目->属性中->配置属性->链接器->输入->在忽略
UAFXCWD.LIB
VC编译中出现以下
错误
时: LINK : fatal error
LN
K1104: cannot open file 'uafxcwd.lib' 解决方法 1.菜单project-》settnigs-》link-》Object/Library modules:中添加uafxcwd.lib (win7下亲测可用) 2. 如果还是不行,选择vc的全部安装,而不是默认安装 如果是unicode,可以用vc盘修复一下vc,钩选相关项。 如果以上方法不行,可以试试下面的方法。 说明: uafxcwd.lib多见于VC6编译过程中,有时候会
遇到
“ fatal error
LN
K1104: cannot open file "uafxcwd.lib"”,意思是找不到uafxcwd.lib库文件,你可在此下载,存放在提示的路径下即可,若缺少这个文件而不修复的话,VC项目可能无法编译成功。如果系统提示“没有找到uafxcwd.lib”、“缺少uafxcwd.lib文件”或者无法加载uafxcwd.lib等提示信息,您需要下载uafxcwd.lib后,拷贝到提示的路径里或在系统内安装注册该文件即可。 安装及使用方法(仅供参考,本方法对BPL文件无效): ①将下载解压的uafxcwd.lib文件复制到C:\Windows\System32系统目录下(请注意:Win7、Vista的系统目录请以实际为准); ②打开“开始”菜单-选择“运行”,输入“regsvr32 uafxcwd.lib”,在接下来的窗口中按回车确认即可完成控件注册。 ③如果在运行某一软件或程序编译时提示缺少、没有找到uafxcwd.lib等类似提示,您可按照提示的路径将lib拷贝到指定目录即可,或者重新添加文件引用。
MFC42UD系列库文件
vc6.0运行一个mfc的例子,却有如下
错误
, LINK : fatal error
LN
K1104: cannot open file "mfc42ud.lib" 第一次
遇到
这种问题,经过本人不断探索发现该程序支持unicode原故, 附解决方法及所有库文件
工具平台和程序库
24,855
社区成员
27,343
社区内容
发帖
与我相关
我的任务
工具平台和程序库
C/C++ 工具平台和程序库
复制链接
扫一扫
分享
社区描述
C/C++ 工具平台和程序库
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章