智能设备开发中C#调用DLL传参及返回字符串的方法

来源:互联网 发布:钓鱼潮汐软件下载 编辑:程序博客网 时间:2024/06/02 03:16

调试成功的
DLL       声明  
int   __declspec(dllexport)   __stdcall   pdaAppTest(TCHAR   *_Data);
int   __declspec(dllexport)   __stdcall   pdaAppTest2(TCHAR   **_Data);
///////////////////程序  
int   pdaAppTest(TCHAR   *_Data)
{
StringCchCopy(_Data,256,L"终于可以了"); return   0;
}

int   pdaAppTest2(TCHAR   **_Data)
{
StringCchCopy(*_Data,10,L"hellohello");
return   0;
}

int pdaAppWriteTest(unsigned char *_Data,TCHAR *_ReData)
{
   CString tmp;
   unsigned char  tmpChar[6]="e3l5o";
   *_Data=*tmpChar;
   tmp.Format(L"%s",_Data);
  
   StringCchCopy(_ReData,10,tmp);
   return 0;
}

//////////////////////////////////////////////////////////////////////////////////////////////  
C#       调用      
[DllImport(DLLName,       EntryPoint       =       "pdaAppTest",CharSet=CharSet.Unicode       ,       SetLastError       =       true)]  
public       static       extern       short       pdaAppTest(       StringBuilder       value);  


[DllImport(DLLName,       EntryPoint       =       "pdaAppTest2",       CharSet       =       CharSet.Auto,       SetLastError       =       true)]  
public       static       extern       short       pdaAppTest2(ref           string           value);  

    private       void       button2_Click(object       sender,       EventArgs       e)  
                                {  
                                                string       filename       =       "";  
                                                pdaAppTest2(ref       filename);  
                                           
                                                label1.Text       =       filename;  
//filename="hellohell"  
                                }  

private       void       button10_Click(object       sender,       EventArgs       e)  
                                {  
                                               
                                                StringBuilder       strTmp       =       new       StringBuilder(64);  
                                                pdaAppTest(strTmp);  
                                                label1.Text       =       strTmp.string();//终于可以了
                                                                                           
                                }  

 private void button11_Click(object sender, EventArgs e)
        {
            StringBuilder strTmp2 = new StringBuilder();
            StringBuilder strTmp = new StringBuilder("gok");
            pdaAppWriteTest(strTmp, strTmp2);//strTmp=strTmp2="eok"
            label1.Text = strTmp.ToString()+strTmp2.ToString();
          
        }
/////////////////////////////////////////////////////////////////////  

问题已经解决谢谢waterine;
不过我看网上还有说用C#   byte来接收DLL返回的字符串,不知道大家谁知道,贴上来谢谢!!  

原创粉丝点击