1

我在一家相机公司工作,我们为客户提供 SDK。从历史上看,我们只提供了针对非调试 CRT 构建的 SDK 的发布版本。作为我们 SDK 包的一部分,我们提供了一些关于如何使用 SDK 的示例。这些示例具有使用调试 CRT 的调试项目配置。在某些情况下,由于这些示例和它们链接的库使用不同的 CRT,我们会遇到奇怪的行为。

我的问题是处理这种情况的适当方法是什么?我们是否应该分发使用调试 CRT 的库的调试版本?只要我们不提供 pdb 或最多提供剥离的 pdb,那么所有专有信息仍应保持隐藏。假设在这样做时除了更大的、未优化的二进制文件之外应该没有其他负面影响是否正确?

分发与调试 CRT 链接的调试二进制文件是常见的做法,还是我们应该继续仅分发发布版本?

4

2 回答 2

2

是的,您需要分发库的调试和发布版本。分别使用 /MDd 和 /MD 构建,因此可以共享 CRT。不同的版本也是基于 CRT 的 VS2005、VS2008 和 VS2010 版本构建的。

这当然是痛苦的。要将其缩小到单个库,您需要仔细设计您的公共接口,以便它不会暴露任何 C++ 对象或任何需要由客户端代码释放的指针。例外也是禁忌。一个常见的解决方案是使用 COM。尤其是自动化兼容接口可用于大多数 Windows 上常用的任何语言运行时。

于 2011-09-21T17:07:15.947 回答
0

您可能会考虑优化调试版本,它被设置为使用库的调试版本,但设置了所有优化标志,就像它们在发布版本中一样。这将防止执行中的细微差异影响用户体验。

于 2011-09-21T16:40:49.537 回答