我需要從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