第一部分 c++
关键程序文件:
xxx.idl
1
[id(DISPID_ABOUTBOX)]
void
AboutBox();
2 [id( 4 )] short IReadPort(unsigned char * inPArr1);//byte类型接口, 在非托管语言中可以正常使用,托管语言中无法正常传入数组
3 [id( 3 )] short I1( void * a1);//与c#的传入System.InPtr类型对应。
2 [id( 4 )] short IReadPort(unsigned char * inPArr1);//byte类型接口, 在非托管语言中可以正常使用,托管语言中无法正常传入数组
3 [id( 3 )] short I1( void * a1);//与c#的传入System.InPtr类型对应。
xxxCtrl.h
//
调度和事件 ID
public :
enum {
};
short IReadPort(unsigned char inPArr1[]);//程序内接口定义
short I1( void * a2);//
};
public :
enum {
};
short IReadPort(unsigned char inPArr1[]);//程序内接口定义
short I1( void * a2);//
};
xxxCtrl.cpp
代码
//
调度映射
BEGIN_DISPATCH_MAP(CSCMUSBBULKCtrl, COleControl)
DISP_FUNCTION_ID(CSCMUSBBULKCtrl, " AboutBox " , DISPID_ABOUTBOX, AboutBox, VT_EMPTY, VTS_NONE)
DISP_FUNCTION_ID(CSCMUSBBULKCtrl, " IReadPort " , 4 ,IReadPort
BEGIN_DISPATCH_MAP(CSCMUSBBULKCtrl, COleControl)
DISP_FUNCTION_ID(CSCMUSBBULKCtrl, " AboutBox " , DISPID_ABOUTBOX, AboutBox, VT_EMPTY, VTS_NONE)
DISP_FUNCTION_ID(CSCMUSBBULKCtrl, " IReadPort " , 4 ,IReadPort
C++创建DLL与C#调用:数组参数传递详解

本文介绍如何在C++中定义DLL,并详细阐述如何在C#应用程序中调用该DLL,特别是处理数组类型的参数传递。涉及到的关键文件包括xxx.idl、xxxCtrl.h和xxxCtrl.cpp。在C#中调用时,需要先引入COM组件。调试混合程序时,尤其是当C#作为容器调试ActiveX控件时,需要在项目配置属性的调试选项中将调试器类型设为"混合"或"仅限本机",确保能够正确设置断点进行调试。
最低0.47元/天 解锁文章
3427

被折叠的 条评论
为什么被折叠?



