<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # QLibrary Class Reference ## [[QtCore](index.htm) module] 該QLibrary類加載共享庫在運行時。[More...](#details) 繼承[QObject](qobject.html)。 ### Types * `enum LoadHint { ResolveAllSymbolsHint, ExportExternalSymbolsHint, LoadArchiveMemberHint }` * `class **[LoadHints](index.htm)**` ### Methods * `__init__ (self, QObject?parent?=?None)` * `__init__ (self, QString?fileName, QObject?parent?=?None)` * `__init__ (self, QString?fileName, int?verNum, QObject?parent?=?None)` * `__init__ (self, QString?fileName, QString?version, QObject?parent?=?None)` * `QString errorString (self)` * `QString fileName (self)` * `bool isLoaded (self)` * `bool load (self)` * `LoadHints loadHints (self)` * `sip.voidptr resolve (self, str?symbol)` * `setFileName (self, QString?fileName)` * `setFileNameAndVersion (self, QString?fileName, int?verNum)` * `setFileNameAndVersion (self, QString?fileName, QString?version)` * `setLoadHints (self, LoadHints?hints)` * `bool unload (self)` ### Static Methods * `bool isLibrary (QString?fileName)` * `sip.voidptr resolve (QString?fileName, str?symbol)` * `sip.voidptr resolve (QString?fileName, int?verNum, str?symbol)` * `sip.voidptr resolve (QString?fileName, QString?version, str?symbol)` * * * ## Detailed Description 該QLibrary類加載共享庫在運行時。 一個QLibrary對象的一個實例在一個單一的共享對象文件操作(我們稱之為“庫” ,但也被稱為一個“ DLL” ) 。一個QLibrary提供了一個平臺無關的方式訪問存儲庫中的功能。你可以傳遞一個文件名在構造函數中,或顯式設置[setFileName](qlibrary.html#fileName-prop)( ) 。當加載庫時, QLibrary中的所有系統特定的庫位置搜索(例如:`LD_LIBRARY_PATH`在Unix上) ,除非文件名有一個絕對路徑。如果文件無法找到, QLibrary試著修改名字用不同平臺特定的文件后綴,如“ 。所以”在Unix上, “ dylib的”在Mac上,或在Windows和Symbian 。“ DLL” 。這使得它可以指定只能由他們的基本名(即沒有自己的后綴)標識的共享庫,所以同樣的代碼將工作在不同的操作系統。 最重要的功能是[load](qlibrary.html#load)( )動態加載的庫文件,[isLoaded](qlibrary.html#isLoaded)()來檢查裝載是否成功,并[resolve](qlibrary.html#resolve)( )來解決在庫中的元件。該[resolve](qlibrary.html#resolve)( )函數隱式地試圖加載庫,如果它沒有被加載。 QLibrary的多個實例可以用來訪問同一個物理磁帶庫。一旦加載,圖書館保留在內存中,直到應用程序終止。您可以嘗試使用卸載庫[unload](qlibrary.html#unload)( ) ,但如果其他的實例都使用相同的庫,則調用將失敗,并卸載當每一個實例都調用才會發生[unload](qlibrary.html#unload)( ) 。 一個典型的應用QLibrary是解決一個庫導出的符號,來調用C函數這個符號表示。這就是所謂的相對于“隱式鏈接” ,這是由在構建過程中的鏈接步驟對鏈接庫中的可執行文件時進行“顯式鏈接” 。 注:在Symbian解決使用他們的名字符號僅支持如果庫被構建為STDDLL 。否則序必須被使用。另外,在塞班庫的路徑被忽略,系統默認的庫位置始終使用。 下面的代碼片段加載一個庫,解決了符號“ mysymbol ” ,并調用該函數,如果一切成功。如果出現問題,例如庫文件不存在或者符號沒有定義,函數指針將是0 ,不會被調用。 ``` QLibrary myLib("mylib"); typedef void (*MyPrototype)(); MyPrototype myFunction = (MyPrototype) myLib.resolve("mysymbol"); if (myFunction) myFunction(); ``` 該符號必須導出為一個C函數的庫[resolve](qlibrary.html#resolve)( )工作。這意味著函數必須被包裹在一個`extern "C"`如果阻塞的庫編譯一個C + +編譯器。在Windows上,這也需要使用一個`dllexport`宏;見[resolve](qlibrary.html#resolve)( )對于如何做到這一點的細節。為方便起見,有一個靜態的[resolve](qlibrary.html#resolve)( )函數,你可以使用,如果你只是想調用的庫函數而不明確的加載庫: ``` typedef void (*MyPrototype)(); MyPrototype myFunction = (MyPrototype) QLibrary.resolve("mylib", "mysymbol"); if (myFunction) myFunction(); ``` * * * ## Type Documentation ``` QLibrary.LoadHint ``` 該枚舉描述了可被用來改變庫被加載時的處理方式的可能的提示。這些值表示當加載庫如何符號解析,并使用指定的[setLoadHints](qlibrary.html#loadHints-prop)()函數。 | Constant | Value | Description | | --- | --- | --- | | `QLibrary.ResolveAllSymbolsHint` | `0x01` | 原因在一個庫中的所有符號加載時得到解決,而不是簡單地當[resolve](qlibrary.html#resolve)()被調用。 | | `QLibrary.ExportExternalSymbolsHint` | `0x02` | 出口未解決的外部符號庫中,使他們能夠在其他以后加載動態加載的庫來解決。 | | `QLibrary.LoadArchiveMemberHint` | `0x04` | 允許內的存檔文件中指定一個特定的目標文件庫的文件名。如果這個提示,給出庫的文件名包含一個路徑,這是一個參考的存檔文件,其次是參照歸檔成員。 | 該LoadHints類型是一個typedef為[QFlags](index.htm)\u003cLoadHint\u003e 。它存儲載入提示值的或組合。 **See also** [loadHints](qlibrary.html#loadHints-prop)。 * * * ## Method Documentation ``` QLibrary.__init__ (self, QObject?parent?=?None) ``` 該_parent_的說法,如果不是沒有,原因_self_通過Qt的,而不是PyQt的擁有。 構造一個庫與給定_parent_。 ``` QLibrary.__init__ (self, QString?fileName, QObject?parent?=?None) ``` 該_parent_的說法,如果不是沒有,原因_self_通過Qt的,而不是PyQt的擁有。 構造一個庫對象與給定_parent_可以加載指定的庫_fileName_。 我們建議省略了文件的后綴_fileName_,因為[QLibrary](qlibrary.html)會自動尋找與相應的后綴的文件按照平臺,如在Windows “ 。所以”在Unix上, “ 。 dylib的”在Mac OS X ,和“ DLL” 。 (見[fileName](qlibrary.html#fileName-prop)。 ) 注:在Symbian的路徑部分_fileName_被忽略。 ``` QLibrary.__init__ (self, QString?fileName, int?verNum, QObject?parent?=?None) ``` 該_parent_的說法,如果不是沒有,原因_self_通過Qt的,而不是PyQt的擁有。 構造一個庫對象與給定_parent_可以加載指定的庫_fileName_和主版本號_verNum_。目前,版本號會被忽略在Windows和Symbian 。 我們建議省略了文件的后綴_fileName_,因為[QLibrary](qlibrary.html)會自動尋找與相應的后綴的文件按照平臺,如在Windows “ 。所以”在Unix上, “ 。 dylib的”在Mac OS X ,和“ DLL” 。 (見[fileName](qlibrary.html#fileName-prop)。 ) 注:在Symbian的路徑部分_fileName_被忽略。 ``` QLibrary.__init__ (self, QString?fileName, QString?version, QObject?parent?=?None) ``` 該_parent_的說法,如果不是沒有,原因_self_通過Qt的,而不是PyQt的擁有。 構造一個庫對象與給定_parent_可以加載指定的庫_fileName_和完整的版本號_version_。目前,版本號會被忽略在Windows和Symbian 。 我們建議省略了文件的后綴_fileName_,因為[QLibrary](qlibrary.html)會自動尋找與相應的后綴的文件按照平臺,如在Windows “ 。所以”在Unix上, “ 。 dylib的”在Mac OS X ,和“ DLL” 。 (見[fileName](qlibrary.html#fileName-prop)。 ) 注:在Symbian的路徑部分_fileName_被忽略。 ``` QString QLibrary.errorString (self) ``` 返回與上次發生錯誤的描述文本字符串。目前, errorString只會被設置,如果[load](qlibrary.html#load)( )[unload](qlibrary.html#unload)()或[resolve](qlibrary.html#resolve)( )由于某種原因失敗。 這個函數中引入了Qt 4.2中。 ``` QString QLibrary.fileName (self) ``` ``` bool QLibrary.isLibrary (QString?fileName) ``` 返回True如果_fileName_有一個可加載的庫的有效后綴,否則返回False 。 | Platform | Valid suffixes | | --- | --- | | Windows | `.dll`, `.DLL` | | Unix/Linux | `.so` | | AIX | `.a` | | HP-UX | `.sl`, `.so` (HP-UXi) | | Mac OS X | `.dylib`, `.bundle`, `.so` | | Symbian | `.dll` | 在Unix尾隨版本號將被忽略。 ``` bool QLibrary.isLoaded (self) ``` 返回True如果庫被加載,否則返回False 。 **See also** [load](qlibrary.html#load)( ) 。 ``` bool QLibrary.load (self) ``` 加載庫,如果已成功加載的庫返回True,否則返回False 。自[resolve](qlibrary.html#resolve)( )解決,沒有必要顯式調用它的任何符號前總是調用這個函數。在某些情況下,您可能想預先加載的庫,你會在這種情況下使用此功能。 **See also** [unload](qlibrary.html#unload)( ) 。 ``` LoadHints QLibrary.loadHints (self) ``` [ ``` sip.voidptr QLibrary.resolve (self, str?symbol) ``` 返回導出符號的地址_symbol_。如有必要,該庫被加載。該函數返回0,如果符號無法解析,或者無法加載庫。 例如: ``` typedef int (*AvgFunction)(int, int); AvgFunction avg = (AvgFunction) library->resolve("avg"); if (avg) return avg(5, 8); else return -1; ``` 該符號必須導出為從庫中的C函數。這意味著函數必須被包裹在一個`extern "C"`如果庫是編譯一個C + +編譯器。在Windows上,還必須明確地從使用的DLL導出函數`__declspec(dllexport)`編譯器指令,例如: ``` extern "C" MY_EXPORT int avg(int a, int b) { return (a + b) / 2; } ``` 同`MY_EXPORT`定義為 ``` #ifdef Q_WS_WIN #define MY_EXPORT __declspec(dllexport) #else #define MY_EXPORT #endif ``` 注:在Symbian解決與符號名只有當加載的庫是作為STDDLL 。否則,該序數必須被使用。 ``` sip.voidptr QLibrary.resolve (QString?fileName, str?symbol) ``` 這是一個重載函數。 ](index.htm) [加載庫_fileName_并返回導出符號的地址_symbol_。需要注意的是_fileName_不應該包括特定于平臺的文件后綴(見](index.htm)[fileName](qlibrary.html#fileName-prop)) 。該庫仍然加載,直到應用程序退出。 該函數返回0,如果符號無法解析,或者無法加載庫。 注:在Symbian解決與符號名只有當加載的庫是作為STDDLL 。否則,該序數必須被使用。 **See also** [resolve](qlibrary.html#resolve)( ) 。 ``` sip.voidptr QLibrary.resolve (QString?fileName, int?verNum, str?symbol) ``` 這是一個重載函數。 加載庫_fileName_與主版本號_verNum_并返回導出符號的地址_symbol_。需要注意的是_fileName_不應該包括特定于平臺的文件后綴(見[fileName](qlibrary.html#fileName-prop)) 。該庫仍然加載,直到應用程序退出。_verNum_被忽略的Windows 。 該函數返回0,如果符號無法解析,或者無法加載庫。 注:在Symbian解決與符號名只有當加載的庫是作為STDDLL 。否則,該序數必須被使用。 **See also** [resolve](qlibrary.html#resolve)( ) 。 ``` sip.voidptr QLibrary.resolve (QString?fileName, QString?version, str?symbol) ``` 這是一個重載函數。 加載庫_fileName_有完整的版本號_version_并返回導出符號的地址_symbol_。需要注意的是_fileName_不應該包括特定于平臺的文件后綴(見[fileName](qlibrary.html#fileName-prop)) 。該庫仍然加載,直到應用程序退出。_version_被忽略的Windows 。 該函數返回0,如果符號無法解析,或者無法加載庫。 注:在Symbian解決與符號名只有當加載的庫是作為STDDLL 。否則,該序數必須被使用。 此功能被引入Qt的4.4 。 **See also** [resolve](qlibrary.html#resolve)( ) 。 ``` QLibrary.setFileName (self, QString?fileName) ``` ``` QLibrary.setFileNameAndVersion (self, QString?fileName, int?verNum) ``` 設置[fileName](qlibrary.html#fileName-prop)財產和主版本號_fileName_和_versionNumber_分別。該_versionNumber_被忽略的Windows和Symbian 。 注:在Symbian的路徑部分_fileName_被忽略。 **See also** [setFileName](qlibrary.html#fileName-prop)( ) 。 ``` QLibrary.setFileNameAndVersion (self, QString?fileName, QString?version) ``` 設置[fileName](qlibrary.html#fileName-prop)財產和完整版本號為_fileName_和_version_分別。該_version_參數被忽略在Windows和Symbian 。 注:在Symbian的路徑部分_fileName_被忽略。 此功能被引入Qt的4.4 。 **See also** [setFileName](qlibrary.html#fileName-prop)( ) 。 ``` QLibrary.setLoadHints (self, LoadHints?hints) ``` ``` bool QLibrary.unload (self) ``` 卸載庫,如果庫可以卸載返回True,否則返回False 。 出現這種情況自動終止應用程序,所以你通常不應需要調用這個函數。 如果其它實例[QLibrary](qlibrary.html)使用相同的庫,則調用將失敗,并卸載只會發生在每一個實例都調用unload ( ) 。 請注意,在Mac OS X 10.3 ( Panther)的,動態庫不能被卸載。 **See also** [resolve](qlibrary.html#resolve)()和[load](qlibrary.html#load)( ) 。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看