gpt4 book ai didi

c++ - 为什么运行时库是编译器选项而不是链接器选项?

转载 作者:IT老高 更新时间:2023-10-28 23:14:30 26 4
gpt4 key购买 nike

我正在尝试使用 Visual Studio 2005 构建一个 C/C++ 静态库。由于运行时库的选择是一个编译选项,我不得不构建我的库的四个变体,一个用于运行时的每个变体图书馆:

  • /MT - 静态运行时库
  • /MD - DLL 运行时库
  • /MTd - 调试静态运行时库
  • /MDd - 调试 DLL 运行时库

这些是编译器 选项,而不是链接器选项。来自 Linux 背景,这似乎很奇怪。不同的运行时库有不同的调用约定吗?为什么不能在链接时解析不同的运行时库,即当我链接使用我的静态库的应用程序时?

最佳答案

这些选项可以添加在运行时库头文件中使用的定义(例如 __DLL 和 __DEBUG)。一件常见的事情是在动态链接时将 __declspec(dllimport) 添加到函数声明中。

编译器似乎也使用这些来帮助链接器链接到正确的库。这在 MSDN 中有解释。 .

关于c++ - 为什么运行时库是编译器选项而不是链接器选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/521972/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com