是否可以在一个项目中混合使用静态,多线程的DLL库?

jam*_*629 4 dll linker shared-libraries

是否可以在Visual Studio的同一项目中使用不同的库A,B,C,其中A是静态库,B是多线程,C是多线程DLL?还是对于单个.exe输出,它们都必须是同一类型?

编辑:对不起,A是一个单线程静态库。B是一个多线程静态库,C是一个多线程DLL。(从链接器的角度来看,我猜A和B是相同的吗?)

小智 8

您可以自由地混合使用静态库和动态库,只要它们都使用相同的运行时库即可。

在属性->常规->配置类型->中,将要静态或动态的库A和B设置为静态库或动态库。

在“属性”->“ C / C ++”->“代码生成”->“运行时库”->“将链接在一起的每个库”必须使用相同的运行时库,例如“多线程调试DLL”。

因此,您可以执行以下操作:
A-配置类型:静态库。运行时库:多线程调试DLL。(是的,可以)
B-配置类型:动态库。运行时库:多线程调试DLL

这两个库可以链接到同一exe中。


Bar*_*ter 1

您是在谈论具有不同 CRT 链接类型(静态、dll)的库编译器吗?如果是的话那就不可能了。

  • 由于一个库是单线程的,而其他库是多线程的,那么即使其他一切都相同,它们也会与不同的 CRT 链接 - 所以你需要知道每个库都有哪些 CRT - 如果是 C++ 那么肯定很重要,如果 C 那么则取决于使用的函数 (3认同)