我得到了一个PL/I DLL,我试图将该DLL导入到我的VB.Net应用程序中。 第一次尝试工作,但程序在几次呼叫后没有发表评论就退出了。 而且不可能从两个不同的线程调用这些函数两次。 我从paramone中的DLL中获得结果。任何想法为什么这不工作正确,以及如何让它工作?VB.Net DLLImport
<DllImport(("PLIDLL.dll"), CallingConvention:=CallingConvention.StdCall)> _
Public Shared Sub MYFUNC(ByVal LogonString As String, _
<MarshalAs(UnmanagedType.VBByRefStr)> ByRef paramone As String, _
ByVal paramtwo As String)
End Sub
如果有什么不清楚的地方请问。
问候林
PS:我已经尝试rerewrite的PL/I代码,以便它返回一个字符串,而不是为ByRef值。同样的问题。
在PLI小组:
MYFUNC: PROC(LOGONSTRING,PARAMONE,PARAMTWO) REORDER
OPTIONS(FROMALIEN NODESCRIPTOR
BYADDR LINKAGE(STDCALL));
DEFAULT RANGE(*) STATIC;
DCL LOGONSTRING CHAR(30);
DCL PARAMONE CHAR(2033);
DCL PARAMTWO CHAR (5500);
解决了它被调用两次的问题。几次通话后,程序仍然退出。 – Lim 2013-02-27 13:56:03
直到你展示界面的另一边,我们无法帮助你。显然你的界面是错误的。我没有见过与ByRef字符串匹配的东西。但如果我们不知道界面的另一面是什么,我们就不能告诉你什么是正确的。 – 2013-02-27 14:59:30