题
我正在将 .NET 支持集成到我们的 C++ 应用程序中。
这是一个老式的 MFC 应用程序,有 1 个额外的文件,使用引用 CWinFormsControl 的“/clr”选项进行编译。
我不允许删除链接器标志“/NODEFAULTLIB”。
(我们有自己的构建管理系统,而不是 Visual Studio 的。)
这意味着我必须指定所有必需的库:VC 运行时和 MFC。
其他编译器选项包括“/MD”
旁边:我无法使用链接器标志“/FORCE:MULTIPLE”,只需添加 一切:
我正在寻找一组不重叠的库。
解决方案 3
我是如何解决的:
- 与“/FORCE:MULTIPLE /verbose”链接(链接正常)并将输出放在一边。
- 与“/NODEFAULTIB /verbose”链接并跟踪上一步输出中所有未解决的问题,并一一添加库。
- 这导致了双打:“AAA.lib:XXX 已在 BBB.lib 中定义”
- 然后我终于明白了:用 /MD重新编译管理和未管理的单元,并链接到(等):mscoree.lib msvcmrt.lib mfcm80d.lib
混合 /MT(非托管)和 /MD(托管)结果证明是个坏主意:需要不同(重叠)的库。
@ajryan:Dependcy Walker 只告诉我使用了哪些 dll,而不告诉我链接时链接到哪些库。(例如。我想。
感谢您的回答!
扬
其他提示
至少:
mscoree.lib msvcrt.lib mfc90.lib(适当调整版本)
并从那里迭代。
使用 AppWizard 按照您的风格(SDI / MDI / 对话框)创建一个简单的 MFC 应用程序,然后 依赖你.
不隶属于 StackOverflow