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