这是对 this question 的一种跟进我昨天发了。我的问题是要链接到哪些运行时 C++ 库。我使用 Qt 作为我的 IDE 的框架和 QtCreator。根据 digia 文档 here , 众所周知,Qt 在使用 /MT
标志构建时会出现内存问题(这会使您的应用程序针对静态运行时库运行)。但是,我还在这个应用程序中使用了第 3 方驱动程序,并且该应用程序上的文档明确指出,除非您链接到静态运行时库,否则它不会构建。果然,它使用 /MT
标志编译得很好,但是当我删除该设置时,它会给我大约 40 个链接器错误。 (到目前为止,我只包括驱动程序静态库中的一个头文件)
所以我的问题是:在这里正确的做法是什么?有没有办法强制驱动程序期待动态运行时库?或者我应该忍受 Qt 的内存管理问题吗?或者有没有办法让 Qt 链接到动态驱动程序和驱动程序(以及它需要的 Boost 部分)链接到静态驱动程序? (请记住,我是在 QtCreator 中执行此操作,而不是在工作室中执行此操作)
最佳答案
/MT
和/MD
都是链接器选项。如果您要构建多个模块,则可以有多个选项。
在这种情况下,对 Qt 和您自己的代码使用 /MD
。使用不依赖于 CRT 的 API 将驱动程序包装在它自己的 DLL 中,并将该 DLL 与 /MT
链接。使用 COM 可能是一种选择。这当然不依赖于 CRT,但它可能有点矫枉过正。
关于c++ - 当/MT 和/MD 都需要时怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15127026/