【问题标题】: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(适当调整版本)
然后从那里迭代。
【解决方案3】:
我是如何解决的:
- 使用“/FORCE:MULTIPLE /verbose”链接(链接正常)并将输出放在一边。
- 与“/NODEFAULTIB /verbose”链接并跟踪上一步输出中所有未解决的问题,并逐个添加库。
- 这导致双精度:“AAA.lib: XXX 已在 BBB.lib 中定义”
- 然后我终于明白了:
使用 /MD 重新编译托管和非托管单元
并链接到(除其他外):
mscoree.lib
msvcmrt.lib
mfcm80d.lib
混合 /MT(非托管)和 /MD(托管)原来是个坏主意:
需要不同(重叠)的库。
@ajryan:Dependcy Walker 只告诉我使用了哪些 dll,而不是在链接时链接到哪些库。
(例如 msvcmrt.lib ?)
我想。
感谢您的回答!
一月