c#调用dll,函数返回值为自定义的C++接口指针,如何在C#中定义函数返回值,并调用该接口提供的各个函数?

c++中定义的类,需要再到c#中重新定义吗?接口的返回值是c++中定义的一个类,该类只有纯虚函数,即为接口。那么在c#中如何获得还接口指针,并能通过该指针调用接口类中的函... c++中定义的类,需要再到c#中重新定义吗?
接口的返回值是c++中定义的一个类,该类只有纯虚函数,即为接口。那么在c#中如何获得还接口指针,并能通过该指针调用接口类中的函数?
跪求!
展开
 我来答
peacexf
2012-11-07 · TA获得超过293个赞
知道小有建树答主
回答量:476
采纳率:100%
帮助的人:400万
展开全部
类是没有办法,结构体还行。
我原来回答过的一个类似的问题,楼主参考一下:
其实对于dll来说,类的动太导出一直是一个难题。我早先由于项目需要,也了解过一些这方面的知识,最后还是放弃了。
后来我想到了一个方法。
类的实例通过指针传出来,然后在类的基础上再封装一层,每个公开的函数都封一个函数,参数表里直接把创建的类的指针给传进去,在dll内部再调相应的方法。

楼主不妨也这样试一下。

比如: g()这个函数,就返回一个IntPtr。这个指针就是在dll中创建对象的指针,但在C#里不具体的把它分出来是张三还是王二。dll中增加调用a的函数add的全局导出函数 add2(void*) 然后在add2的函数体内对指针进行转化后再调其add方法。

有点迂回敌后的感觉。

还有,既然需要用C#来调用,dll也可以写成托管的,只要加上运行时支持就好了。那样的类声明加个partal,然后直接添加引用就能象用c#的dll一样用了,这个多方便啊?我还试了一个mirror驱动的,封成了托管DLL,也一样好用。楼主也可以考虑一下。
追问
这个我也想过,就是把接口再包装一下。
不过,这些DLL是别人已经做好的,主要是提供给c++等调用的。我只想用c#做界面,用这些dll的逻辑功能而已,如果在对这些DLL再做一些封装,感觉还是麻烦了。想走一些捷径,看了有些困难了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式