张德长

导航

C#调用C++的方法

C#调用C++的方法

 

 

0准备

类前缀

#define ATL_NO_VTABLE __declspec(novtable)

函数前缀

#define STDMETHODIMP            HRESULT STDMETHODCALLTYPE

#define STDMETHODCALLTYPE       __stdcall

class ATL_NO_VTABLE CDwgOPFun :

STDMETHODIMP myClass::myFunc(BSTR aaa, LONG* bbb)

1添加

输入方法名,选择参数特性;

in表示输入参数;

out表示输出参数;

retval表示返回值;

in、out都可单独使用;

retval不可单独使用,必须和out一起使用,out retval必须放在最后一个;

out参数必须是指针类型,非指针类型不可以作为out参数;

返回值Hresult表示函数执行结果(是否成功),并不是真正的返回值;

2实现

STDMETHOD(myFunc)(BSTR aaa, LONG* bbb);

STDMETHODIMP myClass::myFunc(BSTR aaa, LONG* bbb)

{ // TODO: 在此添加实现代码 *bbb= 1; return S_OK;}

函数添加后,就会在cpp文件和h文件中出现该函数;

在cpp文件中实现该函数即可;

3引用

调用程序中添加引用

注意,要添加ocx文件,而不是dll文件;

注意,如果之前已经添加,需要重新添加,以更新;

 

添加引用的顺序:

1. 删除之前的引用;

2. VS-生成-清理解决方案;

3. 添加引用,选择ocx文件;

4调用

 

myLib.myClass myInstance= new myLib.myClass();

long returnValue= myClass.myFunc(p1,p2,p3);

1首先用引用名.类名,实例化一个类;

2用类实例.函数名进行函数调用;

3输入所需参数;

4返回值为设置属性out retval的值;

posted on 2022-09-07 14:31  张德长  阅读(403)  评论(0)    收藏  举报