【发布时间】:2011-05-02 10:13:09
【问题描述】:
我有一个用 C++ 编写的 DLL。这个DLL的一个函数如下代码:
C++ 代码:
char _H *GetPalette() {
-------Functions body
-------Functions body
return pPaletteString;
}
现在我想从 C# 代码中的 GetPalette() 函数中获取托盘字符串。
如何从该函数中获取字符串? 我已经在 C# 代码中尝试过这个。但无法得到正确的结果。
C#代码:
[DllImport("cl.dll", EntryPoint = "GetPalette@0", CallingConvention = CallingConvention.StdCall)]
private static extern IntPtr libGetPalette();
public IntPtr GetPalette()
{
return libGetPalette();
}
最后我想得到这样的字符串
IntPtr result;
result = imgProcess.GetPallet();
string pallet;
pallet = Marshal.PtrToStringAnsi(result);
MessageBox.Show(pallet);
此代码无法正常工作。 有人可以帮我吗,我怎样才能从我的 C++ DLL 函数中获取字符串值?
谢谢
沙赫利亚
【问题讨论】:
-
最好定义您遇到的错误或行为。我们怎么知道“这段代码不能正常工作”是什么意思?
-
我从该代码中得到了 '-->' 字符。但它应该像'473757.473767.574767......'字符串一样返回。
标签: c# c++ marshalling char-pointer