【发布时间】:2013-05-19 18:40:56
【问题描述】:
我今天正在和一位同事讨论。他声称用 C 语言编写 DLL 将允许以任何语言编写的任何其他应用程序使用该 DLL。但是,如果该 DLL 是用 C++ 编写的,那么可以使用该 DLL 的应用程序的数量是有限的(可能是因为语言限制)。
- 他说的对吗?
- 如果您要编写一个 DLL,该 DLL 应该由用各种语言编写的各种应用程序使用(但在同一平台上;让我们暂时忘记可移植性),您会用 C/C++ 编写它吗?为什么?
我希望这个问题不是Gorilla vs. Shark 那种问题。如果是,请关闭它。
【问题讨论】:
-
我的 OneJoker 库是用 C 编写的,可以在 Linux 和 Windows 上从 C、C++、Java 和 Python 调用。这相当简单,因为 Java 的 JNI 和 Python 的 ctypes 模块都设计用于 C,而不是 C++。 C++ 引入了许多依赖项,破坏了外部函数名称,等等。只是我的经验。
-
如果需要导出 C 接口,可以
extern "C"。关于第二个问题,您想查看 COM 对象(任何东西都可以使用它们,这就是重点)。
标签: c++ c dll code-reuse