如何封送多字节字符集 C#
How to marshal the multi byte character set C#
我需要调用一个使用 C# 中的多字节字符集的函数 (c/c++)。但我不知道如何将其编组为多字节。有谁知道如何将结果转换为字符串?
C#:
[DllImport("essentials.dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public static extern System.IntPtr GetFiles(string filedir, string path);
[STAThread]
static void Main()
{
string filedir = @"C:UsersRubenDocumentsSchool*";
string path = @"C:UsersRubenDocumentsSchool";
System.IntPtr pointer = GetFiles(filedir, path);
string files = Marshal.PtrToStringAnsi(pointer); // nothing
}
C++
extern "C"
{
__declspec(dllexport) char* GetFiles(char* filedir, char* path)
{
string filedir2 = filedir;
string path2 = path;
string files = GetFiles2(filedir2, path2);
char* Rfiles = new char[files.length() + 1];
strcpy_s(Rfiles, files.length() + 1, files.c_str());
return Rfiles;
}
}
有关 MSDN 的信息:字符串的默认封送处理
您需要先封送 C# 字符串,请尝试以下操作:
[DllImport("essentials.dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public static extern System.IntPtr GetFiles
([MarshalAs(UnmanagedType.AnsiBStr)]string filedir,
[MarshalAs(UnmanagedType.AnsiBStr)]string path);
相关文章:
- 多字节到宽字符无法正常工作
- 如果使用多字节字符集,为什么TCHAR值会更改
- 多字节字符'377777'如何工作?
- 找到最长的UTF-8序列,而无需打破多字节序列
- 如何在MFC多字节应用程序中显示西里尔文本?
- 从多字节字符集转换旧的Visual Studio C++项目
- 了解多字节/Unicode
- 在 linux/mac 中获取多字节字符的"char"
- 以C++输出多字节字符串
- C++中数组中的多字节UTF-8
- 操作多字节字符的字符串
- Visual Studio 多字节字符到单个字节
- 如何封送多字节字符集 C#
- 多字节到宽字符将 (°) 度数符号转换为
- setw() 在包含 UTF-8 多字节字符/码位的字符串上输入错误的输出
- 将 TEXTRANGE 结构的 lpstrtext 成员转换为多字节字符集
- Windows TreeView常见控件通知和多字节字符集的问题
- 在多字节字符集应用程序中的MFC窗体控件上设置Unicode文本
- 我如何在静态库(.lib)中支持Unicode和多字节字符集
- 如何在代码中同时支持 Unicode 和多字节字符集