解决方案 »

  1.   

    本帖最后由 bdmh 于 2014-07-14 11:25:43 编辑
      

  2.   

    试过了,还是不行。是不是DLL没有把返回值写到StringBuilder里面去?
      

  3.   

    可能dll并不返回新内容,所以你先搞清楚dll的作用,有没有返回
      

  4.   


    在DLLImport中加上 CharSet = CharSet.Ansi再试试。
    一般情况下,
    c++:LPTSTR 输出变量名    ----    c#:StringBuilder 输出变量名
    使用了StringBuilder就不需要ref了。his_result 是不是0?会不会是函数调用有别的特殊要求?
      

  5.   

    [DllImport("HNBridge.dll")]这个文件是放哪里的?
      

  6.   

     [DllImport("HNBridge.dll",CharSet = CharSet.Ansi)] 
    public static extern long GetParam(long pDataHandle, string paramName, StringBuilder prtStr, int nMaxValueLenth); StringBuilder mes= new StringBuilder(1024);         
     his_result = GetParam(handle, "MSG",mes, mes.Capacity); 
    最好是将你的函数原型发上来看看
      

  7.   


    在DLLImport中加上 CharSet = CharSet.Ansi再试试。
    一般情况下,
    c++:LPTSTR 输出变量名    ----    c#:StringBuilder 输出变量名
    使用了StringBuilder就不需要ref了。his_result 是不是0?会不会是函数调用有别的特殊要求?
    现在可以返回了,但是StringBuilder读出来的是乱码,请问如何解决是好?
      

  8.   


    在DLLImport中加上 CharSet = CharSet.Ansi再试试。
    一般情况下,
    c++:LPTSTR 输出变量名    ----    c#:StringBuilder 输出变量名
    使用了StringBuilder就不需要ref了。his_result 是不是0?会不会是函数调用有别的特殊要求?
    现在可以返回了,但是StringBuilder读出来的是乱码,请问如何解决是好?从没有返回到返回乱码,也是个进步,
    讲讲这中间你做了什么修改,这样也好帮你分析呀。
    其实还有个更直接的,找dll的提供方,询问有没有什么特殊约定