代码之家  ›  专栏  ›  技术社区  ›  djeidot

我应该为发行版构建什么类型的代码库?

  •  1
  • djeidot  · 技术社区  · 16 年前

    我需要建立一个C++库来分发我们的客户。图书馆必须能够从广泛的语言,包括VB6,C++,VB.net和C.*访问。

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

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

    P.S.对不起,如果问题已经被问到了。我找不到合适的头衔。请随意更正我的英语。

    编辑: 似乎最好的选择是dlls或ocx(即com),但我仍有一些疑问,我会选择哪一个。哪一个更适合现代语言(例如.net)?从最终开发人员的角度来看,哪一个更容易使用?

    4 回复  |  直到 16 年前
        1
  •  3
  •   Community CDub    7 年前

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

    没有什么可以阻止您在DLL中使用C++,但是为了最大的可移植性,只导出C函数。 我有更多关于这个的信息 post .

        2
  •  3
  •   Timo Geusch    16 年前

    如果你想同时支持vb6和.NET,你会很难通过COM来公开接口,但至少这会让你不必基于你试图交互的语言/运行时系统创建多个包装器。

        3
  •  1
  •   jcoder    16 年前

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

    此外,您可以从几乎任何平台调用一个DLL,即使它要求您编写某种类型的包装器。在COM对象中包装一个DLL很容易,但是如果您制作一个本地的COM对象,那么添加一个C样式的DLL API就很难了。另外,您可能希望从Java调用它,并且编写JNI包装器比调用DLL以任何跨平台方式工作更容易。

    实际上,这取决于你真正需要从哪个平台调用它,以及你有多确定将来你不会得到一些不寻常的东西。

        4
  •  0
  •   Rowland Shaw    16 年前

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