从C++到C#的编码
本文关键字:编码 C++ | 更新日期: 2023-09-27 18:25:13
我正在从C++向我的C#程序发送一系列char arrays
。
c++函数看起来像这样:
ReturnChar.cpp
extern "C" RETURNCHAR_API char* testString()
{
return test;
}
ReturnChar.h
extern "C" RETURNCHAR_API char* __cdecl testString();
ReturnChar导入C#
public static class ImportTest
{
[DllImport("ReturnChar.dll", EntryPoint = "testString", CallingConvention = CallingConvention.Cdecl)]
public static unsafe extern char* testString();
}
public partial class MainWindow : Window
{
public unsafe MainWindow()
{
InitializeComponent();
try
{
StringBuilder sb = new StringBuilder(new string(ImportTest.testString()));
textBox1.Text = sb.ToString();
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
事实上,我得到了结果,但看起来C++和C#之间存在编码问题。我该如何解决此问题?
我不打算在C++程序中使用wchar_t
,因为我已经在char数组上完成了操作。我能用C#编码吗?
您应该在C++程序中始终使用wchar_t
,而不是在wchar_t
数组上执行操作。
也就是说,您需要将CharSet = CharSet.Ansi
添加到DllImport
参数中。