wince C# 调用 mfc dll 返回字符串乱码之解决方案[转]


老板让做一个界面,后天用C、C++混合写的。我学了2天winform做个界面,然后把后天打包为dll。C++和C#的类型不匹配,让我折腾了好几天。终于今天下午搞定。期间遇到dll返回字符串为乱码。转来以后备用:

c#调用非托管dll时,数据类型的差异是引起出错的重要原因,在本例中调用dll以返回字符串,一直都是乱码
还几天不得解决,原来这样可以:
在c++ 中返回值用char*
extern "C" __declspec(dllexport) int scanRe(char* data)
{
    strcpy(data,"47");
    return 0;
}

在c#中接收返回值用 ref byte
        [DllImport("PDAScandll.dll",CharSet=System.Runtime.InteropServices.CharSet.Auto)]
        public static extern int scanRe( ref byte param2);
        private void button1_Click(object sender, EventArgs e)
        {
            byte[] param2 = new byte[255];//新建字节数组
           
            scanRe(ref param2[0]);//向dll函数传入参数

            string s = System.Text.Encoding.GetEncoding("GB2312").GetString(param2, 0, param2.Length);
            //将字节数组转换为字符串

            label1.Text =s;
          }


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM