【问题标题】:Visual Studio CRT - how to share a static lib used by clients with static and dynamic CRT?Visual Studio CRT - 如何与静态和动态 CRT 共享客户端使用的静态库?
【发布时间】:2013-08-29 15:49:55
【问题描述】:

如果你有以下项目结构:

 -Shared
 - Exe_Proj1
 - Exe_Proj2

其中使用CRT的方式如下:

-Shared (Dynamic CRT /MD)
  - Exe_Proj1 (Dynamic CRT /MD)
  - Exe_Proj2 (Static CRT /MT)

那么,如何将“Shared”项目与“Exe_Proj2”共享?

我曾考虑在共享中使用 /NODEFAULTLIB,但这不会更改“代码生成”项目设置区域下的 CRT 设置。

【问题讨论】:

    标签: c++ visual-studio-2010 visual-studio msvcrt


    【解决方案1】:

    如果Shared 是一个静态库,你就做不到。让Exe_Proj2 使用动态 CRT 或尝试死。

    如果Shared 是一个动态库,它应该可以工作,只要你不在库之间传递任何需要 CRT 服务(任何 C++ 标准库类型、文件句柄等)的东西,但是在这个如果链接器不应该抱怨。

    【讨论】:

    • 所以 shared 需要一个静态链接 CRT 的 DLL 才能使此设置正常工作?
    • 如果 shared 是一个 DLL,只有当他们想要交换 CRT 绑定的东西时,它才需要与客户端相同的 CRT(一个组件中的malloc,另一个组件中的free 是另一个示例这);如果他们不这样做,DLL 可以拥有它想要的任何 CRT。
    猜你喜欢
    • 2018-05-04
    • 1970-01-01
    • 2010-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多