使用C ++ dll及其VB声明中声明的函数

时间:2018-06-24 12:49:10

标签: c++

安装驱动程序后,评估板AD5501有一个.dll和.lib文件。它包含用于连接到板并向其发送指令的功能。

在模拟网站(https://ez.analog.com/thread/11121)中进行的快速搜索显示了一个文档,其中包含上述DLL文件中的命令。并且提到DLL是用C ++编写的。页面末尾有一个pdf,其中包含DLL的VB6函数声明。

我不了解VB6,但DLL已经用C ++编写的事实使我假设,如果我知道C ++程序中的函数原型,便应该能够访问DLL或LIB文件中的函数。这是正确的假设吗?

网站上有功能原型的描述。所以我做了一个测试C ++程序,如下所示:

#include <iostream>

using namespace std;


unsigned int Search_For_Boards (unsigned int VID, unsigned int PID, unsigned int *Num_boards, char *PartPath[]);
int Connect(unsigned int VID, unsigned int PID, char PartPath, unsigned int *Handle);
int Download_Firmware(unsigned int Handle, char  pcFilePath[]);
int Vendor_Request(unsigned int  Handle, unsigned char Request, unsigned short Value, unsigned short Index,  unsigned char Direction, unsigned short DataLength, unsigned char *Buffer[]);
int Disconnect (unsigned int Handle);

int main(){
    char *partpath[2];
    unsigned int *num;
    unsigned int vid = 1110;
    unsigned int pid = 45617;

    unsigned int error = Search_For_Boards(vid, pid, num,  partpath);

    cout<<"Hello\n"<<error<<endl;
    return 0;
}

并在以下命令中编译代码:

g++ C:\test.cpp -L "C:\Program Files\Analog Devices\USB Drivers" -lADI_CYUSB_USB4

我得到了错误

Undefined reference to Search_For_Boards(unsigned int, unsigned, int, unsigned int*, char**)

显然是函数原型不正确。

现在所有这些都可以让我在C ++程序中使用DLL。看到有关VB6函数声明的文档,使我开始思考是否我的假设是错误的。所以我的两个问题是:

1)我的假设正确吗?

2)如果假设正确,那么我在这里犯了什么错误?我觉得我正确地链接了库,并根据描述的最好地声明了原型。

0 个答案:

没有答案