代码之家  ›  专栏  ›  技术社区  ›  jan

我需要将我的混合模式应用程序链接到哪些库?

  •  1
  • jan  · 技术社区  · 17 年前

    我正在将.NET支持集成到C++应用程序中。
    这是一个老式的MFC应用程序,有一个额外的文件,用引用cwInformsControl的“/clr”选项编译。

    不允许删除链接器标志“/nodefaultlib”。
    (我们有自己的构建管理系统,而不是Visual Studio。)
    这意味着我必须指定所有必要的库:vc运行时和mfc。

    其他编译器选项包括“/md”

    旁边:我不能使用链接器标志“/force:multiple”,只需添加 一切 :
    我在找一组不重叠的库。

    3 回复  |  直到 11 年前
        1
  •  1
  •   Stu    17 年前

    至少:

    毫升 MICRCR.LIB mfc90.lib(适当调整版本)

    从那里迭代。

        2
  •  1
  •   Aidan Ryan    17 年前

    使用Appwizard以您的样式(sdi/mdi/dialog)创建一个裸机MFC应用程序,然后 put on your depends .

        3
  •  1
  •   jan    17 年前

    我是如何解决的:

    1. 链接到“/force:multiple/verbose”(链接正常)并将输出放在一边。
    2. 使用“/nodefaultib/verbose”链接并跟踪上一步输出中所有未解析的内容,并按1添加库。
    3. 这导致了双精度:“aaa.lib:xxx已在bbb.lib中定义”
    4. 然后我终于明白了: 使用/md重新编译托管和非托管单元 链接到(以及其他链接): 毫升 MIVCMRT MFCM80D.LIB

    混合/mt(非托管)和/md(托管)是个坏主意: 需要不同的(重叠的)库。

    @Ajryan:DependcyWalker只告诉我使用了什么DLL,而不是链接时链接到什么库。 (例如msvcmrt.lib?) 我想。

    谢谢你的回答!

    推荐文章