我在VC++中写了一个DLL,其中一个导出函数的参数是一个指针。请问在VB中如何传参?

解决方案 »

  1.   

    声明为 as Any
    参数可以通过 VarPtr(函数名) 来传递地址,具体情况具体分析.
      

  2.   

    在VB工程中使用VC++编写的动态联接库
     
    李志 [email protected] http://vbsite99.163.net/ 
     
    1、在VC++中新建MFC AppWizard(DLL)工程vcdll:
    vcdll.cpp的代码如下:
    #include "stdafx.h"
    #include "vcdll.h"long sum1(); //无参类型
    extern "C" int APIENTRY sum2(int i); //从VB中接收一个参数
    extern "C" long APIENTRY sum3(int i,int j); //从VB中接收两个参数#ifdef _DEBUG
    #define new DEBUG_NEW
    #undef THIS_FILE
    static char THIS_FILE[] = __FILE__;
    #endifBEGIN_MESSAGE_MAP(CVcdllApp, CWinApp)END_MESSAGE_MAP()CVcdllApp::CVcdllApp()
    {
    }CVcdllApp theApp;long sum1()
    { return 100+200; }extern "C" int APIENTRY sum2(int i)
    { i+=100;
    return i;
    }extern "C" long APIENTRY sum3(int i,int j)
    { return i+j;
    }2、在vcdll.def中的代码如下:
    LIBRARY "vcdll"
    DESCRIPTION 'vcdll Windows Dynamic Link Library'EXPORTS
    ; Explicit exports can go here
    sum1
    sum2
    sum3
    3、在编译后,把vcdll.dll拷贝到Windows目录下。
    4、VB中新建标准EXE工程vb_vcdll,vb_vcdll.frm的代码如下:
    Private Declare Function sum1 Lib "vcdll.dll" () As Long 
    Private Declare Function sum2 Lib "vcdll.dll" (ByVal i As Integer) As Integer 
    '声明VC库中的函数
    Private Declare Function sum3 Lib "vcdll.dll" (ByVal i As Integer, ByVal j As 
    Integer) As LongPrivate Sub Command1_Click()
    Text1.Text = sum1() '调用VC函数
    End SubPrivate Sub Command2_Click()
    Text1.Text = sum2(110)
    End SubPrivate Sub Command3_Click()
    Text1.Text = sum3(100, 250)
    End Sub
      
    这段文章是我从VC的一篇技术文章中抄过来了 希望能过你点帮助