2017-07-15 64 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? –