‘壹’ node.js编译生成错误提示fatal error LNK1112/1123的解决方法
编译生成可能遇到的问题
[1]fatal error LNK1112: 模块计算机类型“X86”与目标计算机类型“x64”冲突
原因:win7下的64位系统,在运行程序的时候,需要的DLL必须是64位系统编译的,VS2010也必须在安装的时候,选择了32位编译的支持。如果安装的时候,已经选择了,那么出现该问题的解决办法:
(1)右键项目名,点击属性,弹出项目属性页,找到链接器----高级,修改右侧的目标计算机,选择有X64的那个选项。
(2)右键项目名,选择清理解决方案,清理完之后选择X64平台编译器,然后重新生成解决方案,便可以调试成功。选择X64平台编译器如下图:
如果如果在选择平台的下拉列表里找不到x64,则说明系统没有安装支持64位编译,则可以找VS安装文件进行增量安装。
[2]fatalerrorLNK1123:转换到COFF期间失败:文件无效或损坏
安装多个VS版本会 出现这个问题,解决方法一般如下:
a)微软官方给出的具体解决方法是给VS2010打SP1补丁,下载地址如下:http://www./softs/83189.html 安装完重新生成,如果不行,试下一方法。
b)微软官方的另一个解决方案:发现是嵌入清单的问题,于是对该工程以及所有依赖工程进行如下操作:
右键-工程属性-配置属性- 清单工具-输入和输出-嵌入清单,选择[否]。rebuild 之,成功解决。
错误: 无法生成一个 Microsoft 基础类的应用程序后添加新的资源文件,其中包含一个字符串表
症状
在 Visual C++.NET 中,Microsoft 基础类 (MFC) 应用程序可以有多个资源 (.rc) 文件。但是,当您添加新的资源文件,其中包含一个字符串表,然后尝试生成项目或保存资源文件时,您会收到以下错误消息:
"资源数据是无效的。
无法保存资源脚本。
在新的资源文件的字符串表中添加新的字符串项,然后尝试重新生成该项目时可能会收到以下错误消息:
"致命的错误 CVT1100: 重复的资源。类型: 字符串、 名称: 7、 语言: 0x0409"
"致命错误 LNK1123: 转换到 COFF 期间失败: 文件无效或损坏"
原因
第一个错误发生的原因的新的资源文件的字符串表中是没有字符串项。
如果现有的资源文件和新的资源的字符串表中的 Id 文件冲突,可能会收到第二个错误消息。资源编译器编译字符串表,它保留一组 16 Id。例如,如果在字符串表中的第一个资源文件使用 ID 为 100,而 ID 110 用于在字符串表中的第二个资源文件,将发生冲突。
解决方案
要变通解决此问题,请按照下列步骤操作:
添加新的资源文件的字符串表中的字符串项。
为了避免冲突,请使用 Id 过于接近彼此不同的资源文件的 MFC 项目中的字符串。例如,如果一个资源文件中包含的字符串 ID 为 100,不要使用 ID 值范围 100 至 115 中同一 MFC 项目的其他资源文件中。
‘贰’ keil如何关闭.map文件
map文件是通过编译器编译之后,集程序、数据及IO空间的一种映射文件。
很多技术牛逼的工程师在遇到内存越界,或溢出的情况,首先想到的就是分析map文件。通过map文件可以知道函数大小,入口地址等一些重要信息。
我们在Keil中最常见的就是在编译之后,编译窗口会显示类似如下一段关于程序和数据大小的信息:
Program Size: Code=1112 RO-data=320 RW-data=0 ZI-data=1632
这一段提示信息其实是汇总了程序和数据的信息,这些信息其实是单个模块汇总而成,在map文件里有详细列表。
‘叁’ 怎样VS2013下安装Qt5的插件
下载安装qt
安装完成后打开VS2013,可以看到菜单栏上多出了一个“QT5”选项。
单击上图红色标框中的“Qt options”,并在下图中配置其环境变量。
变量名:VS2013_QT
路径:F:\Qt\Qt5.3.0\5.3\msvc2013_64_opengl(QT5的安装目录)
完成目上步操作后即可在VS2013中新建QT项目,例如新建“QTEST”。
当编译时会出现如下错误:
Qt5Widgetsd.lib(Qt5Widgetsd.dll) : fatal error LNK1112: 模块计算机类型“x64”与目标计算机类型“X86”冲突
右击QTEST项目,选择“属性”---“链接器”--“高级”---“目标计算机”,更改目标计算机为MachineX64 (/MACHINE:X64),并把平台改成“活动(x64)”。
接下来继续配置QT5插件,单击下图中的QT工程设置把版本改为VS2013_QT5
再次编译即可成功运行