不允许"/>

关于链接器:将我的混合模式应用程序链接到哪些库?

关于链接器:将我的混合模式应用程序链接到哪些库?

What libraries do I need to link my mixed-mode application to?

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

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

其他编译器选项包括" / MD"

接下来:我不能使用链接器标志" / FORCE:MULTIPLE",而只能添加所有内容:
我正在寻找一组不重叠的库。


我如何解决它:

  • 与" / FORCE:MULTIPLE / verbose "链接(链接确定),并将输出放在一边。
  • 链接到" / NODEFAULTIB / verbose "并在上一步的输出中跟踪所有未解析的内容,并以1的方式添加库。
  • 这导致双倍:" AAA.lib:BBB.lib中已经定义了XXX "
  • 然后我终于明白了:
    使用/ MD重新编译托管和非托管单位
    并链接到(以及其他)链接:
    mscoree.lib
    msvcmrt.lib
    mfcm80d.lib
  • 混合/ MT(不受管理)和/ MD(受管理)原来是个坏主意:
    需要不同的(重叠)库。

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

    感谢您的回答!

    Jan


    使用AppWizard以您的样式(SDI / MDI /对话框)创建一个简单的MFC应用程序,然后使用您的依赖项。


    最低要求:

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

    然后从那里进行迭代。


    推荐阅读