gpt4 book ai didi

c++ - 如何调用 C DLL 函数 C++/CLI

转载 作者:行者123 更新时间:2023-12-02 02:17:04 26 4
gpt4 key购买 nike

我研究了很多在线搜索,大多数都有谈论 C# 与 C 或 C++ 与 C# 的示例,但从未遇到过使用从 C++ 调用 C DLL(特别是在我的情况下从 C++/CLI 与 WPF 调用)。

有人可以举例说明如何在 C++ 中调用 C DLL 函数吗?我有一个 C DLL,其所有函数都定义为 extern "C"funcName(),还有一个导出函数 .def 文件,其中包含需要导出的所有函数名称。现在有了这个 C DLL,我如何在 C++ 代码中调用它的导出函数。

谢谢。

最佳答案

好的,所以“WPF with C++”不是一种语言。 WPF 是一个 .NET 库。 C++/CLI 是您正在编写的语言。

从 C++/CLI 调用 C dll“非常简单”,具体取决于 DLL 的导出方式。您可以使用 .NET 库或 C 库(我建议使用 C 库)来执行此操作。有两种方法链接到 dll:隐式链接或显式链接。

隐式链接更加清晰,恕我直言。但是您需要访问头文件(编辑:可能使用 declspec 装饰,请参阅下面 BenVoigt 的注释)和 .lib 文件。如果您有其中任何一个,只需将.lib文件添加到附加依赖项(右键单击项目->属性->配置属性->链接器->输入)并将头文件路径添加到包含(右键单击项目->属性->配置属性->C/C++->常规)。然后,您可以将头文件(提及这一点的metacubed的 Prop )包含为外部“C”头文件:

extern "C"
{
#inlude "c_header.h"
}

(这是因为 C++ 会进行名称重整,以便您可以拥有重载、命名空间、类等内容。如果您不这样做,它会将您的 C 头文件解释为 C++ 头文件(并重整您的所有名称)使用 extern "C")

http://msdn.microsoft.com/en-us/library/d14wsce5.aspx

或者您可以明确链接

http://msdn.microsoft.com/en-us/library/784bt7z7.aspx http://msdn.microsoft.com/en-us/library/zzk20sxw.aspx

但我怀疑弄清楚您正在使用 C++/CLI,这会告诉您要谷歌什么。 (尽管 C++ 答案也适合您)。

对于 .NET 方式,一个简单的技巧是查找 C# 调用(请注意,这也是显式链接,因此不需要 .lib 文件和 header )。

http://msdn.microsoft.com/en-us/library/eyzhw3s8.aspx

现在棘手的一点是,如果您使用 C++/CLI 并希望将精美的托管类转换为 C 形式,则必须编码代码。这是一个指向表格的便捷链接,向您展示如何操作。

http://msdn.microsoft.com/en-us/library/ac7ay120%28vs.71%29.aspx

关于c++ - 如何调用 C DLL 函数 C++/CLI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23701824/

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