我在VC++编写的DLL中定义:
define PORT32API _declspec(dllexport)
PORT32API long getdiskid ()
{
   long id = getHardDriveComputerID ();   return id;
}
在VC++中调用这个DLL没有问题,在VB6.0中定义:
Public Declare Function getdiskid Lib "aa.dll" () As Long
编译没问题,但在运行时出错,显示:getdiskid 在aa.dll中找不到入口...
why???

解决方案 »

  1.   

    (1)在头文件中:
              define PORT32API _declspec(dllexport)
              PORT32API extern "c" long WINAPI getdiskid();
    (2)在.cpp文件中:
     long WINAPI getdiskid ()
    {
       long id = getHardDriveComputerID ();   return id;
    }
    (3)在.def文件中:
       EXPORTS 
          getdiskid @1
    在VB中要注册控件!
      

  2.   

    两种做法:
    1)添加一个.DEF文件:
       LIBRARY        MYDLL
       EXPORTS
              getdiskid 2)指定 extern "C"
    extern "C" PORT32API long getdiskid ()
    {
       long id = getHardDriveComputerID ();   return id;
    }
      

  3.   

    你用depend看看你的动态库,你就会知道为什么找不到函数了
      

  4.   

    考别人的,你看看,希望对你有帮助
    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
      

  5.   

    定义成:
    extern "C" __declspec(dllexport) BOOL FAR PASCAL getdiskid ()
    {
       long id = getHardDriveComputerID ();   return id;
    }在.def中定义:
    LIBRARY YourDLL
    DESCRIPTION     ' description'EXPORTS
    getdiskid   @ 1第一次编译运行一定要Copy到WINDOWS系统目录下,不然永远找不到.
    此是Windows系统本身的问题.
      

  6.   

    EXPORTS 
          getdiskid @1
    你需要将你的函数导出供VB吊用
    在VB中使用API函数的声明 指出DLL函数的文件名和函数名参数类型 就可以调用了