string []URL = {"www.facebook.com","www.orkut.com","www.yahoo.com"};
Int32 result = URL.Length;
SetPolicyURL( URL,result );
这是我的 C# 代码,我试图将字符串数组传递给像这样导入的 C++ Dll
[PreserveSig]
[DllImport("PawCtrl.dll", SetLastError = true, CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public static extern void SetPolicyURL( string []policy, Int32 noURL);
但我无法在我的 C++ DLL 中接收它。
PAWCTRL_API void __stdcall SetPolicyURL( char ** URLpolicy, __int32 noURL)
{
for ( int i = 0; i < noURL; i++)
{
URLvector.push_back(URLpolicy[i]);
}
}
谁能帮我解决这个问题
先谢谢了
最佳答案
CharSet = CharSet.Auto 是错误的,它必须是 CharSet.Ansi 才能与 native 代码中的 char* 兼容。如果仍然遇到问题,请使用启用了非托管调试的调试器,在函数的第一条语句上设置断点。
同样drop [PreserveSig],这里没有意义。并且 SetLastError 很可能是错误的,这只是典型的 Windows api 函数。
关于c# - 将字符串数组从 C# 应用程序传递到 C++ DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10429521/