问题描述:

使用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项。

链接器工具错误 LNK2011的更多相关文章

  1. C++链接器工具错误:LNK2001, LNK2019(转载)

    这是归属于链接器工具错误 这一类. 无法解析的外部符号“symbol” 代码引用了链接器无法在库和对象文件中找到的内容(如函数.变量或标签). 可能的原因 代码请求的内容不存在(例如,符号拼写错误或使 ...

  2. 今天使用VS2012遇到一个问题:"链接器工具错误 LNK2026 XXX模块对于 SAFESEH 映像是不安全的"

    今天使用VS2012遇到一个问题:"链接器工具错误 LNK2026 XXX模块对于 SAFESEH 映像是不安全的"   解决方法: 1.打开该项目的“属性页”对话框. 2.单击“ ...

  3. 链接器工具错误 LNK2026 XXX模块对于 SAFESEH 映像是不安全的

    解决方法: 1.打开该项目的"属性页"对话框. 2.单击"链接器"文件夹. 3.单击"命令行"属性页. 4.将 /SAFESEH:NO 键入 ...

  4. VS2012遇到一个问题:"链接器工具错误 LNK2026 XXX模块对于 SAFESEH 映像是不安全的"

    解决方法: 1.打开该项目的“属性页”对话框. 2.单击“链接器”文件夹. 3.单击“命令行”属性页. 4.将 /SAFESEH:NO 键入“附加选项”框中,然后点击应用.

  5. VS中出现“链接器工具错误,XXX工具模块对于SAFESEH映像是不安全的”的解决方法

    1.“调试”菜单->“属性”->“配置属性”->“链接器”->“命令行” 2.在“其它选项”的输入框里输入 /SAFESEH:NO ,点击“应用”

  6. 链接器工具错误 LNK1123

    由于新学C++变成,找不到人求教,所以这个问题困扰了我很久,今天终于找到终极解决方案了: 出处,此帖25楼: http://bbs.csdn.net/topics/390121452 终极解决方案:V ...

  7. 【嵌入式开发】 嵌入式开发工具简介 (裸板调试示例 | 交叉工具链 | Makefile | 链接器脚本 | eclipse JLink 调试环境)

    作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42239705  参考博客 : [嵌入式开发]嵌入式 开发环境 (远 ...

  8. 【VS2015】链接器错误link2001

    昨天的D3d第一章代码自己打了一遍结果运行报错LINK2001,无法解析外部的MinMain. 解决方法: 项目[属性]→[链接器]→[系统]→[子系统(subsystem)]改为控制台或者留空也可以 ...

  9. 基于Web的Kafka管理器工具之Kafka-manager启动时出现Exception in thread "main" java.lang.UnsupportedClassVersionError错误解决办法(图文详解)

    不多说,直接上干货! 前期博客 基于Web的Kafka管理器工具之Kafka-manager的编译部署详细安装 (支持kafka0.8.0.9和0.10以后版本)(图文详解)   问题详情 我在Kaf ...

随机推荐

  1. 工具栏停靠实现(toolbar docking)

    // TODO: 如果不需要工具栏可停靠,则删除这三行 m_ToolBar_File.EnableDocking(CBRS_ALIGN_ANY); EnableDocking(CBRS_ALIGN_A ...

  2. 图片中的Exif信息 的ExifDirectory的大部份常量

    #define FMT_BYTE        1           //Format Byte ////////////////////////////////////////////////// ...

  3. Autofac实例生命周期

    1.默认,每次请求都会返回一个实例 builder.RegisterType<X>().InstancePerDependency(); 2.Per Lifetime Scope:这个作用 ...

  4. PostgreSQL的 initdb 源代码分析之十四

    继续分析: /* * Make the per-database PG_VERSION for template1 only after init'ing it */ write_version_fi ...

  5. 配置文件struts2Struts2配置文件模块化包含(include)与action总结

    本文是一篇关于配置文件struts2的帖子 <include>标签 当Struts配置文件比较多,需要模块化分别或分开成为多个配置文件时,这个功能比较好. 则需要使用<include ...

  6. Java模拟登陆【转载】

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.i ...

  7. delphi 添加节点

      //在选中的节点中上添加1个节点 procedure TForm1.Button1Click(Sender: TObject); begin     with TreeView1 do     b ...

  8. [Codeforces] 347B - Fixed Points

    题意:给定一个序列,现有一种操作:两个数的位置互换.问最多操作一次.序列 [元素位置i]  与 [元素Ai] 相等的最多个数? 依据题意,最多个数为 : [操作之前[元素位置i]  与 [元素Ai] ...

  9. Dia Diagram Mac OSX Yosemite Fix 闪退 xterm

    [转]http://navkirats.blogspot.hk/2014/10/dia-diagram-mac-osx-yosemite-fix-i-use.html I use the Dia to ...

  10. <label>标签for属性的妙用

    在用户注册的时候,常常用户点击文字就需要将光标聚焦到对应的表单上面,这个是怎么实现的呢?就是下面我要介绍的<label>标签的for属性 定义:for 属性规定 label 与哪个表单元素 ...