解决方案 »

  1.   

    检查下delphi的字符串编码和返回,贴出有关代码
      

  2.   

    delphi感觉应该没问题,因为通过dllimport 静态调用的时候,可以正常返回结果。我也怀疑可能是编码的问题,但是,不知道从哪里找起,不知道修改哪里。
      

  3.   

    delegate int GetBusinessData1(string inputData, [MarshalAs(UnmanagedType.LPWStr)] ref StringBuilder outputdata); 
    StringBuilder换成String试试
      

  4.   

    如果你使用 DllImport 的时候,可以正确使用,而且使用了 ref 参数。
    那么我估计是字符集的问题。因为没有看到你的 C 版本的签名,不是很确定。
    那么使用 UnmanagedFunctionPointerAttribute 特性修饰一下那个 delegate。并且根据 C 版本的签名,确定字符集。
      

  5.   

    这个方法有效,但是需要再改下:
    delegate int GetBusinessData1([MarshalAs(UnmanagedType.LPWStr)] string inputData, [MarshalAs(UnmanagedType.LPWStr)] ref StringBuilder outputdata);