链接器工具错误 LNK2011

发布时间:2017-2-24 20:33:22 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"链接器工具错误 LNK2011 ",主要涉及到链接器工具错误 LNK2011 方面的内容,对于链接器工具错误 LNK2011 感兴趣的同学可以参考一下。

问题描述:

使用visual studio 2015编译apr-iconv失败,提示“链接器工具错误 LNK2011:未链接预编译对象;映像可能不能运行”错误。

原因分析:

MSDN关于该错误描述如下(https://msdn.microsoft.com/zh-cn/library/3ay26wa2.aspx):

如果使用预编译头,LINK 要求必须链接所有与预编译头一起创建的对象文件。 如果您有用来生成用于其他源文件的预编译头的源文件,现在必须包括与预编译头一起创建的对象文件。例如,如果编译一个名为 STUB.cpp 的文件,以创建用于其他源文件的预编译头,则必须与 STUB.obj 链接,否则就会得到此错误。 在下列命令行中,第一行用于创建预编译头 COMMON.pch,它与第二行和第三行中的 PROG1.cpp 和 PROG2.cpp 一起使用。 文件 STUB.cpp 只包含 #include行(与 PROG1.cpp 和 PROG2.cpp 中的 #include 行相同),并只用于生成预编译头。 在最后一行中,必须链接 STUB.obj 以避免 LNK2011。 

cl /c /Yccommon.h stub.cpp  cl /c /Yucommon.h prog1.cpp  cl /c /Yucommon.h prog2.cpp  link /out:prog.exe stub.obj prog1.obj prog2.obj  

 而在libapriconv_ccs_modules和libapriconv_ces_modules库中,均使用了对应的预编译头文件,但在link选项中没有添加对应的obj编译对象。

解决方案:

修改apr-iconv\build\modules.mk.win文件:

.c{$(OUTPUT_DIR)}.so:	cl $(ALL_CFLAGS) /Fo$*.obj /Yuiconv.h /c $<	link $(ALL_LDFLAGS) $(MODRES).obj $*.obj $(API_LIBS) /out:$@ \		/base:@"..\build\BaseAddr.ref",$(@F)	if exist $@.manifest \		mt -nologo -manifest $@.manifest -outputresource:$@;2 \		& del "$@.manifest"	del "$*.exp" & del "$*.lib"

  在link命令中添加$(MODRES).obj项。

上一篇:FileSeek文件内容搜索工具下载
下一篇:escape()、encodeURI()、encodeURIComponent()区别详解

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。