在Windows上使用静态/ MT lib构建DLL

时间:2018-02-08 03:19:47

标签: windows visual-studio visual-c++ dll msdn

我有一个第三方静态库libTA.lib。它是用Y/N构建的,我无法改变它。我想将libTA链接到我构建的DLL,mydll。{lib,dll}。当然我的dll应该用/MT构建;我的dll将用于/MD - 内置的exes(也不在我的控制之下)。由于 LNK2038,检测到RuntimeLibrary 不匹配,因此将mydll与libTA.lib链接失败(正确地说,我说)。 那么,我能做些什么呢?使用/MD构建mydll似乎是一个糟糕的主意,因为我不想拥有多个msvc运行时。 所以我的问题是,我的选择是什么?以前有人通过这个并找到了解决方案吗?

1 个答案:

答案 0 :(得分:0)

将解决方案中的所有项目保留到/ MD,以便它们与外部DLL库动态链接。静态库可以包含在其他依赖项中,也可以通过#pragma include()指令。请注意,DLL文件的符号应通过.def文件(使用lib.exe转换为lib文件)或.lib文件导出。但是,所有动态和静态库的工具集,目标平台设置应该相同,以避免链接器错误。