2017-07-15 66 views
0

我发现下面的代码在Qt中加载库,但我不完全理解它是如何工作的。有人可以向我解释:typedef int (*MyPrototype)(int, int);用QLibrary加载库

int r1 = 0; 
QLibrary library("mathlib.so"); 
    if (!library.load()) 
     out << library.errorString() << endl; 
    if (library.load()) 
     out << "library loaded" << endl; 

    typedef int (*MyPrototype)(int, int); 

    MyPrototype myFunction = (MyPrototype)library.resolve("add"); 
    if (myFunction) 
     r1 = myFunction(a,b); 
    else 
     out << library.errorString() << endl; 
+0

它是一个指向函数的指针。 –

+0

因此,我将不得不为我想调用的每个函数执行此操作? –

+0

是的,你将不得不。 –

回答

0

所以或DLL具有的功能,我们要使用它,所以我们怎么能称之为

int add(int in_iParam1, int in_iParam2) 

定义函数类型

typedef int (*MyPrototype)(int, int); 

在这样寻找功能“加”文件

MyPrototype myFunction = (MyPrototype)library.resolve("add"); 

调用函数'用参数'a'和'b'加'并得到'r1'结果

r1 = myFunction(a,b); 
+0

原型的定义是否代表特定的任何东西? –

+0

它应该包含与函数中相同的类型,您将调用 –

+0

OK,但是我指的是函数定义的实际名称:MyPrototype? –