张德长

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

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   张德长  阅读(389)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示