C#中调用C++编译的DLL

C++编译的DLL中,我要调用一个函数,这个函数的返回值是一个自定义类的对象的指针.请问我在C#中应该如何接收这个返回值并且调用这个对象中的方法呢?是要取到函数地址吗?需... C++编译的DLL中,我要调用一个函数,这个函数的返回值是一个自定义类的对象的指针.
请问我在C#中应该如何接收这个返回值并且调用这个对象中的方法呢?
是要取到函数地址吗?需要用委托吗?
最好能帮我写个简短的例子,谢谢!
展开
 我来答
百度网友8adc2ac
2010-08-25 · TA获得超过1388个赞
知道小有建树答主
回答量:375
采纳率:0%
帮助的人:538万
展开全部
如果是托管C++的话可以像1L说的一样直接引用,不过估计这样你就不会问了吧……
C#当中可以调用Native代码DLL中导出的函数,前提是你知道这个函数的名字。不要以为这个条件很简单,这意味着你必须把这个函数定义为extern "C"(也就是标准C的DLL导出,不要用VC++的C++导出格式,更不能直接导出类)。换句话来说,最起码的条件是,你把这个类的成员函数全部定义成普通的函数,也就是把
int MyClass::MyMember(int paraA,int paraB);
这样的函数写成
extern "C"{
int MyClass_MyMember(MyClass *pointThis, int paraA, int paraB);
}
这样的形式然后导出。当然,构造函数和析构函数也不例外,尤其析构函数非常重要,可能需要手工调用。

这些只是最基本的条件。在C#当中调用Native库的函数,而且还用到指针,是一件非常危险的事情,极其容易造成内存泄露,最好三思而后行。
小宝二号
2010-08-24 · TA获得超过421个赞
知道答主
回答量:44
采纳率:0%
帮助的人:32万
展开全部
你把dll拷贝到项目目录下,右击工程添加引用即可,然后可以在用using 应用里面的类……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式