gpt4 book ai didi

c# - 将 static const char* 从 C++ 编码到 C#

转载 作者:行者123 更新时间:2023-11-28 02:57:57 24 4
gpt4 key购买 nike

我有一段代码,我想知道它是否正确:

你好.cpp

static const char _someGlovalVar[] = "my persistant gloval variable";


const char* DLLInterfaceGetName()
{
return _someGlovalVar;
}

你好.h

DLL_EXPORT const char* DLLInterfaceGetName();

你好

[DllImport("hello.dll", EntryPoint = "DLLInterfaceGetName", CharSet = CharSet.Ansi)]
public static extern string DLLInterfaceGetName();

这是正确的吗?

最佳答案

将您的返回值更改为 IntPtr 而不是字符串。

[DllImport("hello.dll", EntryPoint = "DLLInterfaceGetName", CharSet = CharSet.Ansi)]
public static extern IntPtr DLLInterfaceGetName();

然后当您在 C# 代码中调用它时,将指针编码为 C# 字符串:

IntPtr cstr = DLLInterfaceGetName();
String str = Marshal.PtrToStringAnsi(cstr);

此外,仔细检查您在 DLLImport 上使用了正确的调用约定。我有一个问题,因为它默认使用 StdCall,而我实际上想要 Cdecl。

关于c# - 将 static const char* 从 C++ 编码到 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21556996/

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