抄一段给你。
如果那个DLL不能用VB调,你就写个DLL。专用来帮你调那个DLL好了。在VB工程中使用VC++编写的DLL  
李志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
 

解决方案 »

  1.   

    在VC的DLL中VB需要调用的函数名前加上 WINAPI
    例如:
    HRESULT WINAPI SampleFunction(int Flag,....)
    {
      ......
    }
      

  2.   

    to hujun614(Softworm) 你的代码什么意思啊?看不懂...
      

  3.   

    hujun614(Softworm) 很聪明,你可以试一下他的方法呀
    或者,你直接在VB中用LoadLibrary试一试,原理和 hujun614(Softworm) 一样。
      

  4.   

    在用vc写dll函数时应有__stdcall开头,例如:
    __stdcall void TestData()
    {
      MessageBox(GetActiveWindow(),"测试Data","测试",MB_OK);
    }
      

  5.   

    当时vc写dll 可以不用__stdcall
    现在是不能改了
    vb就没有办法调用吗?
      

  6.   

    必须有_stdcall,用Delphi写的DLL也一样,必须有:stdcall