我需要构建一个C++库,以便在我们的客户之间分发。库必须能够从多种语言访问,包括VB6、C++、VB.net和C#。
到目前为止,我一直在使用ActiveX控件(ocx文件)。但我不知道是否有更好的库(dll等)。我可以建造的。你有什么建议吗?
我只使用C++作为库语言,但您可以提到其他语言,以供其他开发人员参考。
如果问题已经被问到了,很抱歉。我很难找到一个合适的头衔。请随时纠正我的英语。
编辑:似乎是最好的选择,要么是DLL,要么是OCX (即COM),但我仍然有些怀疑我会选择哪一个。哪种语言更适合现代语言(例如.NET)?从最终开发人员的角度来看,哪一个更容易使用?
发布于 2009-01-08 12:58:27
几乎每种语言都有一种加载动态库和从它们访问导出的C函数的方法。
没有什么可以阻止您在dll中使用C++,但为了最大限度地实现可移植性,只导出C函数。我在这个post中有更多关于这方面的内容。
发布于 2009-01-08 14:06:38
如果您同时考虑支持VB6和.NET,那么您几乎只能通过COM公开接口,但至少这将使您不必根据您试图与之交互的语言/运行时系统创建多个包装器。
发布于 2009-01-16 11:19:35
如果这可能需要移植到非windows平台,那么DLL /共享库是您的最佳选择,因为COM对象实际上根本不是可移植的。
此外,您可以从几乎任何平台调用DLL,即使它需要编写某种类型的包装器。在com对象中包装dll非常容易,但是如果您生成一个本地com对象,则添加C DLL样式的API要困难得多。另外,例如,您可能希望从java调用它,编写JNI包装器来调用DLL要比让它以任何跨平台的方式处理COM要容易得多。
实际上,这取决于你真正需要从哪个平台调用它,以及你如何确定将来你不会得到一些不同寻常的东西。
https://stackoverflow.com/questions/424105
复制相似问题