栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用C#代码中的C ++ dll中定义的类

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用C#代码中的C ++ dll中定义的类

无法在C#代码中直接使用C ++类。您可以间接使用PInvoke来访问您的类型。

基本模式是为Foo类中的每个成员函数创建一个关联的非成员函数,该非成员函数调用该成员函数。

class Foo {public:  int Bar();};extern "C" Foo* Foo_Create() { return new Foo(); }extern "C" int Foo_Bar(Foo* pFoo) { return pFoo->Bar(); }extern "C" void Foo_Delete(Foo* pFoo) { delete pFoo; }

现在只需将这些方法调用到您的C#代码中即可

[Dllimport("Foo.dll")]public static extern IntPtr Foo_Create();[Dllimport("Foo.dll")]public static extern int Foo_Bar(IntPtr value);[Dllimport("Foo.dll")]public static extern void Foo_Delete(IntPtr value);

缺点是您要传递一个笨拙的IntPtr,但是围绕此指针创建C#包装器类以创建更可用的模型是一件简单的事情。

即使您不拥有此代码,也可以创建另一个DLL,该DLL包装原始DLL并提供一个小的PInvoke层。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/465568.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号