我是 C++ 新手。我正在使用 PINVOKE 从 C# 调用 C++ 函数,并希望将字符串作为输出参数返回。但是我只得到一个空字符串。 int out 参数工作正常。
导入:
[DllImport ( @"UnamanagedAssembly.dll", CharSet = CharSet.Ansi)]
public static extern int Activate(ref int numActivated, StringBuilder eventsActivated);
extern "C" __declspec(dllexport) int Activate(int *p_NumActivated, char *p_EventsActivated) {return Activation::GetInstance()->Activate(p_NumActivated, p_EventsActivated);}
从 C# 调用我的 C++ 函数:
int numActivated = 0;
StringBuilder eventsActivated = new StringBuilder();
int status = Activate(ref numActivated, eventsActivated);
C++函数:
int Activation::Activate(int *p_NumActivated, char *&p_EventsActivated)
{
char *pTemp = "Hello";
p_EventsActivated = pTemp;
*p_NumActivated = 1;
return 0;
}
最佳答案
StringBuilder eventsActivated = new StringBuilder(5);
代替
StringBuilder eventsActivated = new StringBuilder();
关于c# - 如何使用 P/INVOKE 将 C++ char* 编码为 C# 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3278314/