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

时间:2020-03-05 18:39:20  来源:igfitidea点击:

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

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

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

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

解决方案

回答

最低要求:

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

然后从那里进行迭代。

回答

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

回答

我如何解决的:

  • 链接" / FORCE:MULTIPLE / verbose"(链接确定),并将输出放在一边。
  • 链接到" / NODEFAULTIB / verbose",并在上一步的输出中跟踪所有未解析的内容,并将库1加1.
  • 这导致出现双打:" AAA.lib:BBB.lib中已经定义了XXX"
  • 然后,我终于明白了:用/ MD重新编译了托管和非托管单位,并链接到(其中包括):mscoree.lib msvcmrt.lib mfcm80d.lib

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

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

感谢回答!

一月