我应该为分发建立什么样的代码库?

时间:2009-01-08 12:46:40

标签: c++ com dll vb6 ocx

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

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

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

P.S。对不起,如果问题已被提出。找到合适的头衔我遇到了一些麻烦。随意纠正我的英语。

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

4 个答案:

答案 0 :(得分:3)

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

没有什么可以阻止您在dll中使用C ++,但为了最大程度的可移植性,只导出C函数。 我在这个post中有更多关于此的内容。

答案 1 :(得分:3)

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

答案 2 :(得分:1)

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

此外,您几乎可以从任何平台调用DLL,即使它需要您编写某种类型的包装器。在com对象中包装一个dll非常容易,但是如果你创建一个本机com对象,那么添加一个C风格的DLL API要困难得多。另外,您可能希望从java中调用它,例如,编写JNI包装器来调用DLL比使用任何跨平台方式使用COM要容易得多。

真的,这取决于你真正需要从哪个平台调用它,以及你可以确定将来不会得到一些与众不同的东西。

答案 3 :(得分:0)

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