C# 调用C++组件问题请教
C++的头文件(Comm.h)定义(截取)如下:
class COMM_API CCOMM
{
public:
typedef struct DEVICE_STRUCT
{
char id[5];
int function;
int detection;
int malfunction;
int alarm;
char datetime[20];
char imagefilename[35];
} DEVICE_TYPE;
DEVICE_TYPE devices[MAX_DEVICE]; // Contains info for all devices connected to this APS
// Methods
/***********************************************************
Method name:CCOMM()
Description:COMM class constructor.
Parameters:Nil
Return:Nil
Called by:System
Comments:Nil
***********************************************************/
CCOMM();
/***********************************************************
Method name:~CCOMM()
Description:COMM class destructor.
Parameters:Nil
Return:Nil
Called by:System
Comments:Nil
***********************************************************/
~CCOMM();
/***********************************************************
Method name:SetUDPIPPort(char ip[], int in, int out)
Description:Set UDP target IP address and port numbers.
Parameters:char ip[] - target IP address
int in - port for incoming socket
int out - port for outgoing socket
Return:Nil
Called by:User
Comments:Nil
***********************************************************/
void SetUDPIPPort(char ip[], int in, int out);
/***********************************************************
Method name:SetTCPPort(int in)
Description:Set TCP port number.
Parameters:int in - port for incoming socket
Return:Nil
Called by:User
Comments:Nil
***********************************************************/
void SetTCPPort(int in); // Set TCP port number
/***********************************************************
Method name:Initialize()
Description:Initialize UDP and TCP communication sockets.
Parameters:Nil
Return:int - 1:OK, 0:Fail
Called by:User
Comments:Nil
***********************************************************/
int Initialize();
/***********************************************************
Method name:Initialize(char ip[], int in, int out, int TCPin)
Description:Initialize UDP and TCP communication sockets.
Parameters:char ip[] - target IP address
int in - UDP port for incoming socket
int out - UDP port for outgoing socket
int TCPin - TCP port for incoming socket
Return:int - 1:OK, 0:Fail
Called by:User
Comments:Nil
***********************************************************/
int Initialize(char ip[], int in, int out, int TCPin);
};
现在有几个问题不太懂(我对C++一窍不通),盼大家赐教:
1. 头文件中定义的公共方法并不是静态的,在C#中能用 DLLImport extern 调用到它吗?因为要使用它必须先实例化类啊!还有构造函数是否要在C#实现,该如何实现?
2. 碰到两个Initialize 方法, C#中该如何调用?
3. 我不太明白最上面的那个结构的定义,struct后面的 "DEVICE_STRUCT "和}后面的 "DEVICE_TYPE "分别代表什么?哪一个才是结构的名字啊?
谢谢了!
[解决办法]
你这个c++类,c#不能直接用,因为c++的类只能被同一语言(甚至同一编译器)使用,最好再用c++封装一编,输出标准的dll输出函数(c样式的)