恋上小鹿的叶子
工程师
工程师
  • 最后登录2021-12-03
  • 发帖数294
  • 金币2650枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
  • 喜欢达人
  • 原创写手
阅读:152回复:5

C++C#传递中文乱码问题的总结

楼主#
更多 发布于:2021-11-25 16:20
C#
[DllImport("D:/qt-solutions-master/qtwinmigrate/examples/qtdll/bin/release/qtdialog.dll", EntryPoint = "setpath", CallingConvention = CallingConvention.Cdecl)]
public static extern void setpath(byte[] path);
[DllImport("D:/qt-solutions-master/qtwinmigrate/examples/qtdll/bin/release/qtdialog.dll", EntryPoint = "getpath", CallingConvention = CallingConvention.Cdecl)]
public static extern void getpath(ref byte path);
//C#->C++传递中文
byte[] encodedBytes = Encoding.UTF8.GetBytes("D:/本地文件夹");
IntPtr wordPtr = Marshal.AllocHGlobal(encodedBytes.Length);
Marshal.Copy(encodedBytes, 0, wordPtr, encodedBytes.Length);
setpath(encodedBytes);
//C++->C#传递中文
byte[] path = new byte[1024 * 1024];
getpath(ref path[0]);
string pathstr = Encoding.UTF8.GetString(path);
MessageBox.Show(pathstr);


C++
extern "C" __declspec(dllexport) void setpath(char* path)
{
    QMessageBox::information(NULL, "路径", QString::fromStdString(path),  QMessageBox::Yes);
}


extern "C" __declspec(dllexport) void getpath(char* path)
{
    std::string data = "D:/本地文件夹";
    strcpy(path, data.c_str());
}
喜欢1

最新打赏:0人

tystq
资深人士
资深人士
  • 最后登录2021-12-03
  • 发帖数522
  • 金币25101枚
  • 贡献勋章0枚
  • 社区居民
  • 社区明星
  • 忠实会员
  • 喜欢达人
  • 原创写手
沙发#
发布于:2021-11-25 19:44
MFC,QT与C#互调数据类型转换各种坑,不到万不得已直接走通讯模式
chaossven
技术员
技术员
  • 最后登录2021-12-03
  • 发帖数77
  • 金币191枚
  • 贡献勋章0枚
  • 社区居民
板凳#
发布于:2021-11-26 09:07
大佬牛逼~~~~~~~~~~~~
sc6231565
管理员
管理员
  • 最后登录2021-12-03
  • 发帖数1290
  • 金币36284枚
  • 贡献勋章0枚
  • 社区明星
  • 最爱沙发
  • 原创写手
  • 喜欢达人
  • 忠实会员
  • 社区居民
地板#
发布于:2021-11-26 13:35
tystq:MFC,QT与C#互调数据类型转换各种坑,不到万不得已直接走通讯模式回到原帖
这些坑都踩完了~~
恋上小鹿的叶子
工程师
工程师
  • 最后登录2021-12-03
  • 发帖数294
  • 金币2650枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
  • 喜欢达人
  • 原创写手
4楼#
发布于:2021-11-26 13:37
刘工求分享经验刘工求分享经验
八戒你瘦了
技术员
技术员
  • 最后登录2021-12-03
  • 发帖数82
  • 金币534枚
  • 贡献勋章0枚
  • 社区居民
5楼#
发布于:2021-11-29 09:26
刘工求分享经验刘工求分享经验
游客

返回顶部
支付

欢迎打赏,请选择打赏金额

  • 1元
  • 6元
  • 10元
  • 66元
  • 100元

支付即代表同意《本站支付协议》 有疑问请联系客服