安装驱动程序后,评估板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)如果假设正确,那么我在这里犯了什么错误?我觉得我正确地链接了库,并根据描述的最好地声明了原型。