【问题标题】:What libraries do I need to link my mixed-mode application to?我需要将混合模式应用程序链接到哪些库?
【发布时间】:2008-08-13 08:05:00
【问题描述】:

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

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

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

旁边:我不能使用链接器标志“/FORCE:MULTIPLE”,只需添加所有内容
我正在寻找一组不重叠的库。

【问题讨论】:

    标签: linker c++-cli mixed-mode


    【解决方案1】:

    至少:

    mscoree.lib MSVCRT.lib mfc90.lib(适当调整版本)

    然后从那里迭代。

    【讨论】:

      【解决方案2】:

      使用 AppWizard 以您的风格(SDI / MDI / 对话框)创建一个简单的 MFC 应用程序,然后put on your depends

      【讨论】:

        【解决方案3】:

        我是如何解决的:

        1. 使用“/FORCE:MULTIPLE /verbose”链接(链接正常)并将输出放在一边。
        2. 与“/NODEFAULTIB /verbose”链接并跟踪上一步输出中所有未解决的问题,并逐个添加库。
        3. 这导致双精度:“AAA.lib: XXX 已在 BBB.lib 中定义”
        4. 然后我终于明白了: 使用 /MD 重新编译托管和非托管单元 并链接到(除其他外): mscoree.lib msvcmrt.lib mfcm80d.lib

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

        @ajryan:Dependcy Walker 只告诉我使用了哪些 dll,而不是在链接时链接到哪些库。 (例如 msvcmrt.lib ?) 我想。

        感谢您的回答!

        一月

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-06-19
          • 1970-01-01
          • 2017-04-22
          • 2016-01-14
          • 2013-06-27
          相关资源
          最近更新 更多