如何重用静态库代码,这些代码已经链接到visual studio 2010中的另一个c++应用程序的DLL中

How to reuse static library code which is already linked into a DLL with another C++ application in visual studio 2010?

本文关键字:代码 studio visual 2010 另一个 DLL 应用程序 c++ 链接 静态 何重用      更新时间:2023-10-16

我正在Visual Studio 2010中开发一个c++解决方案。我有一个DLL文件,它使用一些标准的c++库函数(如字符串或文件函数)。由于一些可移植性的原因,我不得不用/MT选项编译这个DLL,所以所有需要的运行时库函数将链接到发布的DLL文件。

我有另一个c++项目,这是一个windows应用程序,这个项目也用/MT选项编译,并生成一个独立的exe文件。第二个项目也使用了相同的标准c++库函数,这些函数已经链接在我的DLL中(可执行文件也使用了一些DLL导出的方法)。

现在这是我的问题:有没有办法告诉链接器,不链接常见的运行时函数已经链接到DLL文件&不要链接这些共享部分再次在exe文件(例如重用相同的代码字符串函数已经链接到我的DLL)?

不,你不能那样做。虽然可执行文件依赖于DLL,但它们仍然可以被视为独立的、独立的二进制工件,每个工件都应该包含正确执行所需的符号。

这是首选动态链接的原因之一。此外,我不认为动态链接和重新分发运行时与应用程序有任何问题。

虽然Microsoft Visual C Runtime包含在大多数平台上,但它有许多不同的版本,其中一些是错误的或/和打破向后兼容性。因此,分发msvcr*.dll的版本总是一个好主意,你知道你的应用程序肯定工作。