从 C++ 到 C# 的编码
Posted
技术标签:
【中文标题】从 C++ 到 C# 的编码【英文标题】:Encoding from C++ to C# 【发布时间】:2012-02-20 07:03:11 【问题描述】:我正在从 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# 中以某种方式对其进行编码吗?
【问题讨论】:
Interop sending string from C# to C++ 的可能重复项 【参考方案1】:您应该在整个 C++ 程序中使用wchar_t
,并改为对wchar_t
数组执行操作。
也就是说,您需要将CharSet = CharSet.Ansi
添加到DllImport
参数中。
【讨论】:
以上是关于从 C++ 到 C# 的编码的主要内容,如果未能解决你的问题,请参考以下文章
如何从 C++ 中的 Base64 编码字符串在 GDI+ 中创建图像?
将带有结构字段的结构从 c++ 返回到 c# pinvoke
分析一个用 C++ 编码的 OpenGL 2.0 游戏,入口项目是 C#,全部在 Visual Studio 2010 中?