我有一个用 C 编写的 DLL。我在这个 dll 中有一个函数,例如:
unsigned char DLL_EXPORT getTRK(char *XML, unsigned long *Len)
{
MessageBox(NULL, XML, "Dll message", MB_OK);
char s[] = "Some string";
XML = s;
return rand()%2;
}
我需要更改 dll 中的 XML 变量值并将这个值带到我的 C# prog 中。我在 C# 上有下一个代码:
[DllImport("Some_DLL.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern byte getTRK(string XML, uint Len);
...
string xml = "123";
uint len = 0;
tbXml.Clear();
if (getTRK(xml, len) == 0)
{
tbXml.AppendText(xml);
}
else
{
tbXml.AppendText("Some error!");
}
我尝试了不同的方法来做到这一点,但没有任何工作需要。我想获取 xml 变量 =“Some string”的 c# prog 值。我怎么才能得到它?如果我使用 ref 或 out 像这样:
[DllImport("Some_DLL.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern byte getTRK(ref string XML, ref uint Len);
...
string xml = "123";
uint len = 0;
tbXml.Clear();
if (getTRK(ref xml, ref len) == 0)
{
tbXml.AppendText(xml);
}
else
{
tbXml.AppendText("Some error!");
}
dll 得到一些垃圾值,而不是“123”。如果我这样做:
*XML = *s;
也没有任何反应。