我在一家相机公司工作,我们为客户提供 SDK。过去,我们只提供了针对非调试 CRT 构建的 SDK 的发布版本。作为我们 SDK 包的一部分,我们提供了一些关于如何使用 SDK 的示例。这些示例具有使用调试 CRT 的调试项目配置。在某些情况下,由于这些示例和它们链接的库使用不同的 CRT,我们会遇到奇怪的行为。
我的问题是处理这种情况的适当方法是什么?我们是否应该分发使用调试 CRT 的库的调试版本?只要我们不提供 pdb 或最多不提供剥离的 pdb,那么所有专有信息都应该保持隐藏状态。假设在这样做时除了一个更大的、未优化的二进制文件之外应该没有其他负面影响是否正确?
分发链接到调试 CRT 的调试二进制文件是常见的做法,还是我们应该继续只分发发布版本?
最佳答案
是的,您需要分发库的调试和发布版本。分别使用/MDd 和/MD 构建,因此可以共享 CRT。也有不同的版本,例如,针对 CRT 的 VS2005、VS2008 和 VS2010 版本构建。
这当然很痛苦。要将其缩小为单个库,您需要精心设计公共(public)接口(interface),使其不会暴露任何 C++ 对象或任何需要由客户端代码释放的指针。异常(exception)也是禁忌。一个常见的解决方案是使用 COM。尤其是自动化兼容接口(interface)可供 Windows 上常用的大多数语言运行时使用。
关于c++ - 如果最终用户需要链接到调试 CRT,分发 SDK 的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7502952/