首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C# 调用C++组件有关问题请问

2012-02-13 
C# 调用C++组件问题请教C++的头文件(Comm.h)定义(截取)如下:classCOMM_APICCOMM{public:typedefstructDEVI

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样式的)

热点排行