【问题标题】:Can a app built with Visual C++ 6 use a DLL built with Visual Studio 2008?使用 Visual C++ 6 构建的应用程序能否使用使用 Visual Studio 2008 构建的 DLL?
【发布时间】:2009-09-04 21:18:58
【问题描述】:

我正在开发一个 SDK,我们的客户端仍在使用 VC++ 6 进行编码,而其他人使用 Visual Studio 2005 和其他人使用 2008。

目前,我们构建了多种版本的 SDK,其中每个编译器都构建了完全相同的源代码。我想知道这是否真的有必要。使用 VS2008 构建我们的 SDK(采用 DLL 的形式)是否安全,并期望我们使用 VC++ 6 的客户能够毫无问题地使用它?

【问题讨论】:

    标签: visual-studio visual-studio-2008 visual-c++ compatibility


    【解决方案1】:

    视情况而定。您的 DLL 是否依赖于 VC 运行时、MFC 或 ATL?如果是这样,您的客户将不得不分发这些 dll。您的 dll 是否导出 C++ 结构/类/函数? C++ 没有标准化的 ABI,因此它们可能会也可能不会与其他编译器一起使用。如果你的 dll 只导出 extern "C" {} 样式,你会没事的。

    【讨论】:

      【解决方案2】:

      如果您不允许客户端程序删除在您的 SDK 中分配的内存,这是非常安全的。反之亦然。

      【讨论】:

        【解决方案3】:

        如果 DLL 具有纯 C API,您的可执行文件将永远不会释放 DLL 分配的任何资源(反之亦然),那么它应该可以工作。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-04-08
          • 2019-07-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多