求救: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可以,关键看你怎么声明的结构体,要用到非托管封送