如何将函数从.dll导入并使用到VB.NET?我在VBA中对此有解决方案,但在VB.NET中没有?

如何将函数从.dll导入并使用到VB.NET?我在VBA中对此有解决方案,但在VB.NET中没有?,vb.net,vba,dll,interop,dllimport,Vb.net,Vba,Dll,Interop,Dllimport,我是VB.NET的新手。我有一些用VBA编写的应用程序,现在想转到VB.NET。 下面是我如何声明这些.dll函数的示例: 将函数loadsession Lib vpmsdl32 ByVal vpmname声明为字符串,长度为 公共声明函数setvar Lib vpmsdl32.dll ByVal session为Long,ByVal fieldname为String,ByVal value为String为Long 公共声明函数compute Lib vpmsdl32.dll ByVal ses

我是VB.NET的新手。我有一些用VBA编写的应用程序,现在想转到VB.NET。 下面是我如何声明这些.dll函数的示例:

将函数loadsession Lib vpmsdl32 ByVal vpmname声明为字符串,长度为 公共声明函数setvar Lib vpmsdl32.dll ByVal session为Long,ByVal fieldname为String,ByVal value为String为Long 公共声明函数compute Lib vpmsdl32.dll ByVal session As Long、ByVal what As String、ByVal result As String、ByVal result_buffer_size As Long、ByVal message_buffer_size As Long、ByVal fieldref As String、ByVal fieldref_buffer_size As Long 公共声明函数closesession Lib vpmsdl32.dll ByVal会话的长度与 公共声明函数将卸载所有库vpmsdl32,只要 我在VBA代码中使用这种方式,例如,当我使用函数loadsession打开会话时:

session=loadsessiona文件的绝对路径 设置输入参数:

ret=setvarsession,输入名称,输入值 提示:在执行以下计算之后,我不必声明变量ret:

retcomp=computesession,输出名称,结果,4000,消息,1000,fieldref,250 提示:我也不必声明变量retcomp,在那之后,我在变量result中得到计算结果。我不清楚如何使用变量调用函数作为输出变量,出于某些原因,此函数将计算结果分配给变量result,但它可以工作

现在,我正试图在VB.NET应用程序中实现类似的方法。首先,我执行以下功能的DLLImport:

公营平沃克 _ 公共共享函数loadsessionByVal vpmname作为字符串,长度相同 端函数 _ 公共共享函数setvarByVal session为Long,ByVal fieldname为String,ByVal value为String为Long 端函数 _ 公共共享函数computeByVal session为Long,ByVal what为String,ByVal result为String,ByVal result_buffer_size为Long,ByVal message_buffer_size为String,ByVal fieldref为String,ByVal fieldref_buffer_size为Long 端函数 _ 公共共享函数closesessionByVal会话只要长 端函数 _ 公共共享函数只要 端函数 末级 后来我调用了这些函数,它用于打开会话,例如PInvoke.loadsession。但我不知道如何使用我在VBA中使用的类似原理访问PInvoke.compute函数的结果


非常感谢您的回复

你试过什么?您是否尝试过像在VBA中那样调用compute?只要retcomp是compute返回的类型,就应该调暗retcomp。@Blackwood是的,我正试图用VBA中的方式调用compute。我已经声明Dim retcomp为Long,但retcomp只是一个指示器,用于在计算成功时返回信息1,否则为0。我不知道如何在VBA中提取计算结果?不幸的是,我没有关于如何在VB.NET中使用它的文档,但我确信这是可能的。也许我需要更改DLLImport的声明或其他什么?