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的值; |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?