gpt4 book ai didi

c++ - 用 C 编写的 DLL 与用 C++ 编写的相同

转载 作者:可可西里 更新时间:2023-11-01 16:31:10 25 4
gpt4 key购买 nike

今天我和一位同事进行了讨论。他声称用 C 编写 DLL 将允许任何其他应用程序,无论是用什么语言编写的,都可以使用该 DLL。但是,如果该 DLL 是用 C++ 编写的,则可以使用该 DLL 的应用程序数量是有限的(可能是因为语言限制)。

  1. 他说的对吗?
  2. 如果您要编写一个 DLL,供以各种语言编写的各种应用程序使用(但在同一平台上;让我们暂时忘记可移植性),您会用 C/C++ 编写它吗?为什么?

我希望这个问题不是 Gorilla vs. Shark有点问题。如果是,请关闭它。

最佳答案

大多数语言都提供了一种(简单的)方法来从 DLL 调用 C 函数。 C++ 不是这种情况,因为 C++ ABI(C++ 函数的二进制接口(interface))是特定于供应商的。

除此之外,几乎不可能与使用高级 C++ 构造(如模板或 STL)的 C++ DLL 进行交互。

但是,您的 DLL 的内容可以用 C++ 编写,您只需要确保您的接口(interface)是 C 兼容的。为此,请不要在接口(interface)中使用 C++ 构造并将声明用 :

包围
#ifdef __cpluscplus
extern "C" {
#endif

/* You declarations here */

#ifdef __cpluscplus
}
#endif

...这样,您就用 C 接口(interface)包装了 C++ 库。

编辑:正如 Mats Petersson 所写,不要忘记确保在包装器中处理所有可能的 C++ 异常。

关于c++ - 用 C 编写的 DLL 与用 C++ 编写的相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16730284/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com