[英]accessing the functions from external static library
我是Qt中C ++编程的新手。 如果您能回答任何或部分问题,那将是非常有用的,非常感谢。
我将外部库用作静态库,因为它仅在“ .lib”文件中提供。 我已经通过stackoverflow网站的帮助正确链接了它。 我也有与库关联的头文件。 我在main.cpp中包含了头文件。 我可以通过查看头文件来获取功能签名。 我的问题是如何从外部库访问函数?
例如,这是我尝试在main.cpp中使用的单个函数:
==> QRETURN Quickfind(char * device,unsigned long length);
int main (int argc, char *argv[]{
// I have declared like this by copying the exact function signature with added extern
extern QRETURN Quickfind(char *device, unsigned long length);
cout << device << " and " << length << endl;
}但是,这将显示在此范围内未声明设备和长度的错误。 因此,我通过在函数之前声明参数来进行修改:
int main (int argc, char *argv[]{
char *device = NULL;
unsigned long length = NULL;
extern QRETURN Quickfind(char *device, unsigned long length);
cout << device << " and " << length << endl;
我希望这两个参数将被传递到函数中,但显然它们没有。 另外,如果我在声明后直接使用该函数:
int main (int argc, char *argv[]{
char *device = NULL;
unsigned long length = NULL;
extern QRETURN Quickfind(char *device, unsigned long length);
Quickfind(*device, length);
cout << device << " and " << length << endl;
}这将为我提供对“ Quickfind @ 8”错误消息的未定义引用。
有人可以向我展示或给我一些提示或帮助,以了解如何从外部静态库正确访问这些函数及其用法吗? 谢谢。
尽管您对自己的工作有正确的总体思路,但是您的操作方式还是存在一些问题。
首先,由于您尝试使用extern
函数,因此要使用头文件中的函数。 据我所知,只有在另一个.cpp文件中声明了函数,类,结构或全局变量的情况下,才应使用extern
。
由于函数是在头文件中声明的,因此不需要使用extern
,只需像已有文件一样包含文件即可。
其次,在创建可变length
,将其设置为NULL
; 从技术上讲,在大多数情况下, NULL
仅定义为0,但仅应在声明空指针(如字符数组)时使用NULL
。
第三,基于Quickfind的功能签名...据我所知,Quickfind接受参数device和length,并返回QRETURN。 我不知道Quickfind到底能做什么,但是我猜想它没有给您设备名称,也没有长度。
它可能会给您起一个名字,但如果确实如此,则必须创建一个数组,然后首先将名称放入其中。
我不完全知道发生了什么,但是请尝试以下操作:
#include <your header file> or "your header file"
int main (int argc, char *argv[]{
char *device = new char[100];
unsigned long length = 100;
Quickfind(device, length);
cout << device << " and " << length << endl;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.