gpt4 book ai didi

C# 从返回 char 指针的 c++ 函数中获取字符串/字符值

转载 作者:太空狗 更新时间:2023-10-29 21:50:36 26 4
gpt4 key购买 nike

我有一个用 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 函数中获取字符串值?

谢谢

沙赫里亚尔

最佳答案

您可以在 C# 代码中定义带有字符串返回类型的 C++ 函数。

[DllImport("cl.dll")]
private static extern string GetPalette();

而不是简单地从您的 C# 代码中调用它。

string palette = GetPalette();

DllImport 属性中,您可能需要设置正确的调用约定 CallingConvention 和字符编码 CharSet

关于C# 从返回 char 指针的 c++ 函数中获取字符串/字符值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5855928/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com