• 关于C#调用C++ 的DLL传送字符串显示乱码的解决


    最近在做一个程序,想把某些功能用C++写成DLL供C#调用,但是在写好DLL用C#传递字符串参数时,在DLL中显示传送过来的字符串是乱码,DLL里的代码根本无法用这些字符串进行其它的处理.为此,花了一天时间在全网翻了一遍,发现没有一篇能完美的解决问题的,当然也有部分的提示是正确的.在经过一翻调试后.终于找到解决问题的办法,在此写下以备忘,也给需要的人参考,水平有限,高手略过了.过程如下:

    建立C++ DLL的项目要进行字符集设置,使用多字节字符集,如图

    DLL的代码如下:

    extern "C"_declspec(dllexport) int Strc(char str[])
    {
    MessageBox(NULL,str,(LPCSTR)"提示",MB_OK);
    return 0;
    }

    建立C#项目代码如下:

    [DllImport("CPPDemo.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.Cdecl)]
    public static extern bool Strc(byte[] sourceStr);
    
    string stringStr = "测试的字符串"; 
    bool returnStr = CPPDLL.Strc(Encoding.Default.GetBytes(stringStr));

    运行的结果如下图所示:

  • 相关阅读:
    Atos cannot get symbols from dSYM of archived application
    iOS 中捕获程序崩溃日志 (2014-04-22 17:35:59)
    mysql创建索引
    maven整理项目spring配置文件加载问题
    js继承
    创建对象的方式
    js闭包
    js两种创建对象方式
    shiro-web整合
    shiro连接数据库
  • 原文地址:https://www.cnblogs.com/billboy/p/4723968.html
Copyright © 2020-2023  润新知