2017-07-15 6 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が機能を持っており、我々はそれを使用したいので、どのように我々はそうで「追加」機能を探して

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

機能タイプを定義

int add(int in_iParam1, int in_iParam2) 

それを呼び出すことができますファイル

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

コール関数 'パラメータ 'a'と 'b'を追加して結果を 'r1'にする

r1 = myFunction(a,b); 
+0

プロトタイプの定義は何かを具体的に表していますか? –

+0

それはあなたが –

+0

と呼ぶ関数と同じ型を含むべきですが、私は関数の定義に与えられた実際の名前を参照していました:MyPrototype? –

関連する問題