1

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

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

现在这是我的问题:有什么方法可以告诉链接器不要链接已经链接到 DLL 文件的公共运行时函数,并且不要在 exe 文件中再次链接这些共享部分(例如,对已经链接的字符串函数重用相同的代码链接到我的 DLL)?

4

1 回答 1

1

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

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

尽管Microsoft Visual C Runtime包含在大多数平台上,但它有许多不同的版本,其中一些是错误的或/并且破坏了向后兼容性msvcr*.dll因此,分发您知道肯定适用于您的应用程序的版本始终是一个好主意。

于 2013-04-18T18:40:17.497 回答