我研究了很多在线搜索,并且大多数示例都涉及使用C#进行C#或使用C#进行C ++,但是从未使用过C ++中的C DLL调用(在我的情况下特别是使用WPF的C ++ / CLI)。
有人可以举例说明如何在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文件添加到其他依赖项(右键单击项目->属性->配置属性->链接器->输入),然后将头文件路径添加到include(右键单击项目->属性->配置属性-> C / C ++->常规)。然后,您可以将头文件(提及此问题的属性推荐)作为外部“ C”头文件包括在内:
extern "C"
{
#inlude "c_header.h"
}
(这是因为C ++进行名称处理,以便您可以重载&命名空间,类和其他东西。如果不使用,它将把C头文件解释为C ++头文件(并修饰所有名称)extern "C"
)
http://msdn.microsoft.com/zh-CN/library/d14wsce5.aspx
或者您可以显式链接
http://msdn.microsoft.com/en-us/library/784bt7z7.aspx http://msdn.microsoft.com/en-us/library/zzk20sxw.aspx
但是我怀疑弄清楚您使用的是C ++ / CLI,这会告诉您使用Google的内容。(尽管C ++答案也适用于您)。
对于.NET方式,一个简单的技巧是查找C#调用(请注意,这也是显式链接,因此不需要.lib文件和标头)。
http://msdn.microsoft.com/zh-CN/library/eyzhw3s8.aspx
现在,棘手的一点是,如果您使用的是C ++ / CLI,并且想将您喜欢的托管类转换为C形式,则必须将代码编组。这是一个方便的链接,指向表格,向您展示如何操作。
http://msdn.microsoft.com/zh-CN/library/ac7ay120%28vs.71%29.aspx
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句