windows api p/invoke 调用失败
用C++写了个DLL导出了个函数,然后由 C# p/invoke 调用,这个函数主要是调用DhcpCreateClientInfo 创建一个DHCP项:
该函数的参数都是LPTSTR,在C#中以string方式声明
代码大概如下:
DHCP_CLIENT_INFO info;
......
......
填充该结构体
最后:
return DhcpCreateClientInfo(server, &info);
然后就出现了个很奇怪的现象:同样的代码用C++调用函数正常运行;但是用C#P/INVOKE调用就一直返回 87 错误代码
在C#中启用本地代码调试,发现从C#中传入的值都是正确的;为了排除参数问题,取消了所有参数,在函数内用wchar* server 之类的声明变量,硬编码测试,但是结果还是 87 ;
很奇怪的是
DhcpDeleteClientInfo 函数调用都是正常的,但是DhcpCreateClientInfo叫是返回87;目前猜测是DHCP_CLIENT_INFO info 这个结构体填充的问题;同样的调用 DhcpCreateClientInfoVQ
还是一样的结果; 但是C++上调用都是正常;有没有什么解决办法