我用SDK写了一段程序,界面用VB来做,我打算把SDK程序做成DLL给VB调用,现在找了好多帖子都没有一个完整的例子说如何实现的,即使找到了也是草草的说几句就完事,我照着方法去做又不成功,有哪位高手能贴个例子出来看看,最好有详细的步骤说明SDK端如何做,然后VB端是如何调用的,100分如果不够可以另开贴给分,谢了!

解决方案 »

  1.   

    该怎么调用就怎么调用(好像说了句废话)在VB的模块里面(应该是 不是窗体也不是类的那个模块)里面声明函数,注意最好为public,否则出了这个模块就不能用了……然后在你想要调用的地方调用就可以了似乎DLL部分需要用extern "C"来修饰,并且要导出。
      

  2.   

    谢谢楼上那位,能否写个简单的例子我看看阿,dll和vb调用的
      

  3.   

    例子……三月份的时候写过一个,现在手上没有VB(说实话,我很讨厌VB的),我仅仅实现了返回int,VB用long接受而已……好像还有一个要注意的地方是调用协议,VB里面似乎需要使用__stdcall(WINAPI即是这个协议的宏定义)才行声明需要使用这个语法
    Public Declare Function Function Lib "dllname" Alias "funcname" (varname) As ret_typevarname是参数名称和类型,需要小心的是C里面传递指针的地方需要用ByRef,而传递值的地方需要使用ByVal
      

  4.   

    // vbdll.cpp : Defines the entry point for the DLL application.
    //#include <windows.h>BOOL APIENTRY DllMain( HANDLE hModule, 
                           DWORD  ul_reason_for_call, 
                           LPVOID lpReserved
     )
    {
    return TRUE;
    }long __stdcall Addition(long a, long b)
    {
    return (a + b);
    }// def
    ; vbdll.defEXPORTS
    Addition
     // vb 中调用Private Declare Function Addition Lib "vbdll" (ByVal a As Long, ByVal b As Long) As LongPrivate Sub Form_Load()
    Dim i As Long
    i = Addition(1, 2)
    End Sub
      

  5.   

    1.首先在VC中建立一個靜態DLL Project.
    BOOL APIENTRY DllMain(HANDLE hInst, DWORD ul_reason_being_called, LPVOID lpReserved)
    {  return TRUE;
        UNREFERENCED_PARAMETER(hInst);
        UNREFERENCED_PARAMETER(ul_reason_being_called);
        UNREFERENCED_PARAMETER(lpReserved);
    }2.在DLL中加入你的函數及接口:
    Explain:
    __declspec(dllexport) INT WINAPI GetNumericSum(INT a,INT b)
    {
        return a + b;
    }3.EXPORTS Dll function:
    加一個.Def文件,手工鍵入:
    LIBRARY   MyVbTest
    EXPORTS
        GetNumericSum  @0014.編譯,生成DLL.Copy到Windows目錄.5.在VB中宣告函數.
    Private Declare Function GetNumericSum Lib "MyVbTest.dll" (ByVal a As Long, ByVal b As Long) As Long6.使用:Dim nSum as Long
    nSum = GetNumericSum(100,20);ok...