windows – 构建DLL时;我应该链接什么类型的CRT?

前端之家收集整理的这篇文章主要介绍了windows – 构建DLL时;我应该链接什么类型的CRT?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在窗户;有两个链接到CRT的选项:

>多线程,静态链接
>多线程,动态链接

有人能说清楚这里的最佳做法是什么吗?我应该“静态”链接到CRT还是进行动态链接

如果我做一个动态链接,并且我编写了一个程序,使用我的DLL另一个第三方DLL(这是一个静态链接到CRT),这是一个问题吗?

解决方法

当您在应用程序中使用DLL时,这是一个大问题. EXE和DLL使用相同的内存分配器非常重要.如果您从需要由调用者释放的DLL函数返回指针或C对象(如std :: string).要获得相同的分配器,所有模块必须使用相同的CRT实例.只有使用/ MD编译才能选择CRT的DLL版本.他们必须使用相同版本的CRT.无论如何使用/ MT会导致非常难以诊断内存泄漏,如果幸运的话,会导致访问冲突.

使用/ MT可以更轻松地部署应用程序,因为您不必安装运行时DLL.如暗示的那样,只有部署EXE才能安全.或者,当您非常小心地控制DLL的公共接口时.例如,自动兼容的COM服务器可以链接到CRT的静态版本.自动化有关于交换指针和管理内存的严格规则.

猜你在找的Windows相关文章