zoukankan      html  css  js  c++  java
  • 关于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));

    运行的结果如下图所示:

  • 相关阅读:
    linux 常用命令
    博客园兼容手机端
    博客园点击页面,显示句子
    win10 系统禁止自动更新
    php获取数组中第一个元素或最后一个元素
    设计模式
    高并发抢购
    mySql 数据库优化
    3dMax+VR的安装步骤
    3dmax
  • 原文地址:https://www.cnblogs.com/billboy/p/4723968.html
Copyright © 2011-2022 走看看