vb6,动态加载dll的调用入口点,最后一步

时间:2014-02-04 15:36:56

标签: dll vb6

我想动态加载一个dll并调用这个dll的函数(VB6)。

函数“getservice”需要2个Long并返回Long(它是服务的ID)。

到目前为止,我还有以下几行:

Private Declare Function LoadLibrary Lib "kernel32" ...
Private Declare Function GetProcAddress Lib "kernel32" ...

Dim lib_timing As Long
Dim pa_getservice As Long

lib_timing = LoadLibrary("l:\abc\runtime\mvc_timing.dll)
pa_getservice = GetProcAddress(lib_timing, "getservice")

现在,我不知道如何调用lib_timing的getservice函数

call pa_getservice ??? or
call .. (..) 

我已经看到了stackoverflow问题编号1667397,但我不明白最后一部分,我如何将它用于我的电话。

我现在有 - 来自GetProcAddress - 这很长。但是为了调用我自己的dll的功能,我该怎么做呢?

提前感谢所有有用的信息

沃尔夫冈

2 个答案:

答案 0 :(得分:1)

假设您调用的DLL不支持COM,因此后期绑定到它,我解决这样的问题的方法是编写一个小的.NET包装DLL,它支持COM互操作到VB6,然后从VB调用包装器。然后,您可以选择迟到或早期绑定。

This question has a suitable answer.

答案 1 :(得分:0)

我在

上找到了我的问题的解决方案

http://www.xtremevbtalk.com/archive/index.php/t-227349.html

If it is a standard DLL (you'll notice you can't reference it if you attempt to) 
then you'll have to use LoadLibrary, GetProcAddress to get a function pointer. 
Since VB has no good means of calling a function pointer, you'd then pass that 
pointer off to a dll in a language that can call one.