我需要从Powerbuilder调用一个'经典'DLL C#(而不是COM)。 基于此示例在C#I中创建DLL: RGiesecke dll Export template。Powerbuilder调用C#DLL(RGiesecke DLL导出模板)
我设法从Powerbuilder内部调用DLL。
但我想传递字符串“作为参考”:所以我加“REF”到函数声明:
[DllExport("ExpTest", CallingConvention = CallingConvention.Winapi)]
[return: MarshalAs(UnmanagedType.LPWStr)]
public static string ExpTest([MarshalAs(UnmanagedType.LPWStr)] ref string sText, out int length)
{
MessageBox.Show(sText, "ExpTest");
length = sText.Length;
//sText = "def";
return sText;
}
从Powerbuilder中调用此函数的代码:
String ls_arg, ls_ret
ls_arg = "abc"
long ll_len
ls_ret = ExpTest(ls_arg, ll_len)
messagebox(ls_arg, ls_ret)
当调用原始函数(没有'ref'到'string sTest'声明),它返回“abc”。 当我给'string sTest'声明添加'ref'时,它会返回一些'中文字符')。
任何人都可以帮忙吗? 更好:如何向Powerbuilder传递一组字符串(由ref)?
感谢您的帮助!
Msc。
试图在Powerbuilder中定义这样的外部函数: - 函数字符串ExpTest(REF字符串值,REF长LEN)LIBRARY “Classicdll.dll”
- 函数字符串ExpTest(字符串值,REF长LEN)库“Classicdll.dll”
- 以及两者都与ALIAS FOR“ExpTest; Ansi”...
在PoweBuilder中。它是如何在“本地外部功能”中完成的? –
嗨爱德华多,我已经添加了我在帖子中使用的声明.... – MSC