【问题标题】:What kind of code library should I build for distribution?我应该为分发构建什么样的代码库?
【发布时间】:2010-09-30 06:15:43
【问题描述】:

我需要构建一个 C++ 库来分发给我们的客户。该库必须能够从多种语言访问,包括 VB6、C++、VB.net 和 C#。

到目前为止,我一直在使用 ActiveX 控件(ocx 文件)。但我想知道是否有更好的库(dll 等)可以构建。你有什么推荐的?

我仅限于 C++ 作为库语言,但您可以提及其他语言以供其他开发人员参考。

附:对不起,如果这个问题已经被问到了。我很难找到合适的标题。随时纠正我的英语。

编辑: 似乎最好的选择是 DLL 或 OCX(即 COM),但我仍然对我将选择哪一个存有疑问。哪一种更适合现代语言(例如 .NET)?从最终开发人员的角度来看,哪一个更容易使用?

【问题讨论】:

    标签: c++ com dll vb6 ocx


    【解决方案1】:

    几乎每种语言都有一种加载动态库和访问从中导出的 C 函数的方法。

    没有什么可以阻止您在 dll 中使用 C++,但为了获得最大的可移植性,请仅导出 C 函数。 我在post 中有更多关于此的信息。

    【讨论】:

    • 唯一的缺点就是不支持VB6吧?
    • 为什么不呢? VB6 可以使用导出的 C 函数加载“普通”dll。
    • 老实说,我从未尝试过,但一些谷歌搜索给了我一些成功。这个似乎适用于vb6:msdn.microsoft.com/en-us/library/aa231253(VS.60).aspx
    • 在我工作的地方,我们最近从 DLL 切换到 OCX,因为在 VB6 的解释调试模式下 declared DLL 存在问题(闻起来很像堆损坏)。
    【解决方案2】:

    如果您正在考虑同时支持 VB6 和 .NET,那么您几乎无法通过 COM 公开接口,但至少这可以让您不必基于语言创建多个包装器/您尝试与之交互的运行时系统。

    【讨论】:

      【解决方案3】:

      如果有任何可能需要将其移植到非 Windows 平台,那么 DLL / 共享库是您的最佳选择,因为 COM 对象实际上根本无法移植。

      此外,您几乎可以从任何平台调用 DLL,即使它需要您编写某种包装器。将 dll 包装在 com 对象中非常容易,但是如果您制作本机 com 对象,则添加 C 样式的 DLL API 会困难得多。另外,您可能想从 java 中调用它,并且编写一个 JNI 包装器来调用您的 DLL 比让它以任何类型的跨平台方式与 COM 一起工作要容易得多。

      真的,这取决于您真正需要从哪些平台调用它,以及您能确定自己在未来不会得到不寻常的东西。

      【讨论】:

      • 在这种情况下,我不是在看非 Windows 平台,但是是的,我明白你的意思。
      【解决方案4】:

      要从所有这些语言中调用,您唯一真正的选择就是 COM,而不必在需要的地方编写包装器(这会破坏这一点)

      【讨论】:

        猜你喜欢
        • 2014-07-09
        • 1970-01-01
        • 1970-01-01
        • 2010-09-13
        • 1970-01-01
        • 1970-01-01
        • 2012-05-14
        • 2022-07-15
        相关资源
        最近更新 更多