Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从外部静态库访问函数 我对Qt中的C++编程很陌生。如果你能回答任何或部分问题,那将非常有帮助,谢谢_C++_Static_External - Fatal编程技术网

从外部静态库访问函数 我对Qt中的C++编程很陌生。如果你能回答任何或部分问题,那将非常有帮助,谢谢

从外部静态库访问函数 我对Qt中的C++编程很陌生。如果你能回答任何或部分问题,那将非常有帮助,谢谢,c++,static,external,C++,Static,External,我使用外部库作为静态库,因为它只在“.lib”文件中提供。我已经通过stackoverflow网站的帮助正确链接了它。我还有与库关联的头文件。我在main.cpp中包含了头文件。我可以通过查看头文件获得函数签名。我的问题是如何从外部库访问函数 例如,我尝试在main.cpp中使用一个函数: ==>QRETURN快速查找(字符*设备,无符号长长度) intmain(intargc,char*argv[]{ //我通过复制带有附加外部元素的确切函数签名声明了这一点 外部QRETURN快速查找(字符*

我使用外部库作为静态库,因为它只在“.lib”文件中提供。我已经通过stackoverflow网站的帮助正确链接了它。我还有与库关联的头文件。我在main.cpp中包含了头文件。我可以通过查看头文件获得函数签名。我的问题是如何从外部库访问函数

例如,我尝试在main.cpp中使用一个函数:

==>QRETURN快速查找(字符*设备,无符号长长度)

intmain(intargc,char*argv[]{
//我通过复制带有附加外部元素的确切函数签名声明了这一点
外部QRETURN快速查找(字符*设备,无符号长);

cout虽然你对你要做的事情有正确的总体想法,但你做这件事的方式存在一些问题

首先,由于您正试图对头文件中的函数使用
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;
} 
#包括或“您的头文件”
int main(int argc,char*argv[]{
字符*设备=新字符[100];
无符号长长度=100;
快速查找(设备、长度);

CUT给自己一本好的C++书籍,你迫切需要阅读关于语言的基本知识。(抱歉,如果这听起来很刺耳,但给你一个线索,这样你就可以编译,也许运行不会有帮助。C++是相当复杂的,你需要了解你在写什么,而且没有一个替代阅读一本好书或十。)
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;
#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;
}