【问题标题】:Windows runtime library dependencies and pure C codeWindows 运行时库依赖项和纯 C 代码
【发布时间】:2014-05-07 10:29:29
【问题描述】:

对于 Windows 上的 C++,重要的是所有链接在一起的库都已使用相同的 C++ 运行时库进行编译。这同样适用于纯 C 代码吗?

更具体地说,我想为许多不同的 Visual Studio 版本(静态和动态)发布一个 SDK。此 SDK 与 libpng 链接,这是一个 C 项目(不是 C++)。我是否仍然需要为每个 Visual Studio 版本构建一个 libpng 二进制文件,或者运行时库的 C 部分是否相同?

【问题讨论】:

  • 看具体代码。如果不同的模块使用不同的 C 运行时实例,则需要检查许多事情,例如,释放一块内存的模块始终是分配它的那个模块;您不要尝试跨模块边界发送 C 运行时流;您不要跨模块边界使用 errno 或其他全局变量;等等。

标签: c++ c windows linker libraries


【解决方案1】:

即使使用纯 C 代码,也不会出现在一个模块中使用 malloc 分配的内存在另一个模块中被释放的情况。这不仅仅是使用相同版本的库的问题:为了支持这种跨模块内存操作,模块必须使用相同的库instance

【讨论】:

    猜你喜欢
    • 2020-08-31
    • 1970-01-01
    • 1970-01-01
    • 2021-10-20
    • 2013-05-23
    • 1970-01-01
    • 1970-01-01
    • 2020-10-10
    • 1970-01-01
    相关资源
    最近更新 更多