Delphi的dll如何向C#传出string(1)
2012-02-22 14:17
274 查看
如果从dll传出string,一般定义成PChar,由调用者分配好内存,并告诉大小,这样比较麻烦。
既然delphi的dll可以传回variant(实际是array),就把字串转成byte array直接传回吧,如:
Delphi XE代码:
C#代码:
既然delphi的dll可以传回variant(实际是array),就把字串转成byte array直接传回吧,如:
Delphi XE代码:
function Call(AEndPointURL:PWideChar;AServiceName,AMethodName:PWideChar; const AParams:OLEVariant;out AResult:OLEVariant;out AErrorMsg:OLEVariant):HResult; begin try .... except on E:Exception do begin Result:=1000; AErrorMsg:=WideBytesOf(E.Message); end; end; end;
C#代码:
public static class inetdll { [DllImport("tmtsSoapStub.dll", EntryPoint = "Call", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)] public static extern int Call( [MarshalAs(UnmanagedType.LPWStr)]string AEndPointURL, [MarshalAs(UnmanagedType.LPWStr)] string AServiceName, [MarshalAs(UnmanagedType.LPWStr)] string AMethodName, ref object AParams, out object AResult, out object AErrorMsg); } private void button4_Click(object sender, EventArgs e) { object vErrorMsg; object r; object vParams=null; int hResult = inetdll.Call( "http://127.0.0.1:8080/Broker.dll/soap/ISoapService", "Test", "Test", ref vParams, out r, out vErrorMsg); if (hResult!=0) MessageBox.Show(ASCIIEncoding.Unicode.GetString((byte[])vErrorMsg)); }
相关文章推荐
- Delphi的dll如何向C#传出string(2)
- C#调用delphi编写的dll时如何传入传出OLEVariant
- 求教,c#如何调用delphi编写的dll中的函数
- C#调用Delphi DLL获取字符串(C# IntPtr 与 string互转 )
- Delphi 调用 C# Dll 时一个编译问题 mscorlib_TLB.h Ambiguity between 'String' and 'System::String'
- C#调用DELPHI的DLL时传递string数组
- delphi如何调用C#的dll?
- C#中如何调用Delphi写的Dll
- C# 如何调用 Delphi 编写的 DLL 方法
- C#中如何调用Delphi写的Dll,实现画图功能
- C#中如何调用Delphi写的Dll
- C# 如何调用 Delphi 编写的 DLL 方法
- 如何在Delphi 中调用C#生成的DLL类库
- delphi如何调用C# dll
- 求教,c#如何调用delphi编写的dll中的函数
- 如何在C#中使用C/C++写的DLL。
- c# 如何使用DLL的config文件中的信息
- C# 中如何编写和调用自己的DLL
- C#的DLL注册为COM,Delphi来调用
- C#调用Delphi的dll的两种方法