日期:2014-05-17  浏览次数:20829 次

求救:C#代码里调用C++的dll,类型转换问题
我的C#代码里要调用一个用C++写的dll,其中一个接口函数是这样声明的:

DLL_CPFW_EXPORT HNLCPFW WINAPI cpfw_open(WCHAR *pwStrPort, WCHAR *pwStrParam, int nMode = CPFW_OM_NORMAL);
其中HNLCPFW是一个结构体指针。

我在C#这边把它改成
 public static extern IntPtr cpfw_open(string pwStrPort, string pwStrParam, int nMode = 0); 
发现不对,请帮忙看看哪里有错,

我试过用C++代码来调用是没有问题的,可以返回想要的指针和内容, 
C#代码那么写编译没问题,但返回值老是0,应该是说函数返回的是空指针,
求大家多多赐教啊,

不知道把结构体指针HNLCPFW换成IntPtr 行不行呢?

------解决方案--------------------
IntPtr可以,关键看你怎么声明的结构体,要用到非托管封送