VS2010 LNK1104 无法打开.map

现象:

每次选择 重新生成,就会出现上述错误。

然后选择 生成,正常生成。

 

解决:改成否就可以了

 

 

原因:

https://social.msdn.microsoft.com/Forums/en-US/19804537-05ba-4adf-8273-68d2450401e0/build-failes-if-map-file-should-be-generated?forum=vcprerelease

 

What I'm seeing is that, when the map file doesn't exist, the link fails with that exact error message, and a zero-byte map file is created.  That zero-byte map file will prevent the error on the next build, but it doesn't help for the next rebuild since the map file is deleted.

 

I've also discovered that incremental linking has to be enabled for this to occur.

 

The original report doesn't say the link fails "when a map file exists in the folder", it just says "in the obj32-Folder there is a map file of 0 size."  It doesn't say whether that's before or after the failed link.

 

The machine I'm testing this on doesn't have any real-time AV scanning.

 

Here is the link command lnie, according the Linker->Command Line property page.

 

/OUT:"..\WinDebug\Module.dll" /INCREMENTAL /NOLOGO /LIBPATH:"..\WinDebug\Lib" /DLL "msxml2.lib" "version.lib" /MANIFEST /ManifestFile:"./WinDebug\Module.dll.intermediate.manifest" /ALLOWISOLATION /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:"..\WinDebug\PDB\Module.pdb" /MAP":..\WinDebug\ASM\Module\Module.map" /MAPINFO:EXPORTS /SUBSYSTEM:WINDOWS /PGD:"C:\Projects\vs2010\WinDebug\Module.pgd" /TLBID:1 /DYNAMICBASE:NO /IMPLIB:"..\WinDebug\LIB\Module.lib" /MACHINE:X86 /ERRORREPORT:QUEUE 

 

Also, the output window shows the "creating library" line twice when this happens.  And in Process Monitor, I can see there are three PIDs involved for LINK.EXE (and I'm only building one project).  It seems like, at one point, two different instances of LINK.EXE are launched that both try to open the map file.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: lnk1104错误提示无法打开文件*.lib,这通常是因为编译无法找到所需的库文件。解决方法是检查库文件路径是否正确,或者将库文件添加到编译器的库路径中。另外,也可以尝试重新安装编译器或库文件来解决问题。 ### 回答2: lnk1104是Microsoft Visual Studio编译器的一个错误代码,它指出在链接过程中无法打开指定的库文件(*.lib),因此导致链接失败。 解决此问题有以下几种方法: 1. 检查库文件路径 确保库文件路径正确,可以查看链接器属性中的库文件路径设置,以及确保库文件实际存在。 2. 添加库文件依赖 在项目属性的“连接器”选项卡中添加库文件的依赖项,以确保链接器可以找到所需的库文件。要添加库文件依赖,请在“附加依赖项”字段中填写库文件名称(例如,添加“xxx.lib”)。 3. 检查库文件是否与目标编译器匹配 确保库文件与目标编译器匹配,包括编译器版本、架构(32位或64位)、运行时库等参数。 4. 检查库文件是否正确生成 如果库文件是自己编写的,则需要确保它已正确生成。检查编译选项、链接选项、导出符号等设置是否正确。 总之,lnk1104无法打开文件*.lib的错误常见于库文件路径、依赖项、编译器匹配、以及库文件本身等问题。通过检查以上几个方面,可以再次尝试进行编译链接,以解决此错误。 ### 回答3: lnk1104错误是一种常见的连接器错误,它通常发生在VS或其他IDE中编译时。这种错误的产生原因多种多样,但是其中一个比较常见的原因就是需要链接的依赖库文件不存在或者路径设置不正确。这种情况下,会出现无法打开文件*.lib的错误提示。 如果出现这种情况,需要分析一下问题所在。具体来说,可以从以下几个方面入手: 1. 检查路径设置 首先需要确认的是,需要链接的依赖库文件是否存在,路径是否设置正确。如果路径设置不正确,链接器就无法找到库文件。因此,需要检查项目的链接器设置,确保依赖库文件的路径正确。 2. 检查库文件是否存在 如前所述,如果需要链接的库文件不存在,链接器就会报错。因此,需要检查一下库文件是否存在,如果不存在,需要手动添加相应的库文件。 3. 检查库文件是否被占用 如果库文件正在被其他应用程序占用,那么链接器就无法打开该文件。解决这种问题的方法就是关闭占用该文件的应用程序。 4. 检查库文件格式 有时,链接器报错是因为库文件的格式不正确,导致链接器无法打开该文件。这种情况下,需要检查一下库文件的格式是否正确,并尝试使用其他库文件。 总之,当出现lnk1104错误提示时,需要认真分析问题所在,并根据具体情况采取相应的解决方法。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值