she*_*ill 5 windows dll crt visual-studio
在窗户里;有 2 个选项可以链接到 CRT:
有人可以解释一下这里的最佳做法是什么吗?我应该“静态”链接到 CRT 还是进行动态链接?
如果我执行动态链接,并且我编写了一个使用我的 DLL + 另一个 3rd 方 DLL(它正在执行到 CRT 的静态链接)的程序,这是一个问题吗?
当您在应用程序中使用 DLL 时,这是一件大事。这是非常的EXE和DLL文件的使用相同的内存分配很重要。如果您从需要由调用者释放的 DLL 函数返回指针或 C++ 对象(如 std::string)。要获得相同的分配器,所有模块必须使用相同的 CRT 实例。如果您使用 /MD 编译以选择 CRT 的 DLL 版本,您只会得到它。 而且它们必须都使用相同版本的 CRT。无论如何,使用 /MT 会导致很难诊断内存泄漏,如果幸运的话,这是访问冲突。
使用 /MT 可以更轻松地部署您的应用程序,因为您不必安装运行时 DLL。正如暗示的那样,只有当您只需要部署一个 EXE 时,这才是安全的。或者当您非常小心地控制 DLL 的公共接口时。例如,自动化兼容的 COM 服务器可以链接到 CRT 的静态版本。自动化在交换指针和管理内存方面有严格的规则。
| 归档时间: |
|
| 查看次数: |
2187 次 |
| 最近记录: |