我正在开发一个 SDK,我们的客户端仍在使用 VC++ 6 进行编码,而其他客户端则使用 Visual Studio 2005,而其他客户端则使用 2008。
目前,我们构建了几种风格的 SDK,我们使用每个编译器构建完全相同的源代码。我想知道这是否真的有必要。使用 VS2008 构建我们的 SDK(采用 DLL 的形式)并期望我们使用 VC++ 6 的客户能够毫无问题地使用它是否安全?
我正在开发一个 SDK,我们的客户端仍在使用 VC++ 6 进行编码,而其他客户端则使用 Visual Studio 2005,而其他客户端则使用 2008。
目前,我们构建了几种风格的 SDK,我们使用每个编译器构建完全相同的源代码。我想知道这是否真的有必要。使用 VS2008 构建我们的 SDK(采用 DLL 的形式)并期望我们使用 VC++ 6 的客户能够毫无问题地使用它是否安全?
要看。您的 DLL 是否依赖于 VC 运行时、MFC 或 ATL?如果是这样,您的客户将不得不分发这些 dll。您的 dll 是否导出 C++ 结构/类/函数?C++ 没有标准化的 ABI,因此它们可能会也可能不会与其他编译器一起使用。如果你的 dll 只导出 extern "C" {} 样式,你会没事的。
如果 DLL 具有纯 C API,您的可执行文件将永远不会释放 DLL 分配的任何资源(反之亦然),那么它应该可以工作。
如果您不允许客户端程序删除在您的 SDK 中分配的内存,这是非常安全的。反之亦然。