2010-09-08 175 views

回答

2

不幸的是,沒有。動態鏈接庫是運行時加載所必需的。

0

您是否有權訪問源代碼?或者至少是一個頭文件?如果你這樣做,那麼你可以創建一個共享庫或一個鏈接到庫的Python擴展。既然你提到了DLL,我會假設你正在使用Windows。 This tutorial可能是有用的。

3

理論上,是的;在實踐中,可能不會 - 當然不像DLL那麼簡單。靜態庫本質上只是對象文件的集合,並且需要一個完整的鏈接器來正確解析它們可能包含的所有重定位引用。將靜態庫和內容鏈接起來形成一個共享庫也是可能的,但這需要將靜態庫構建爲位置無關代碼(PIC),這是不能保證的。從理論上講,沒有任何理由,完整的鏈接程序將鏈接庫的工作無法在運行時完成,但實際上沒有現成的代碼。您最好的實際選擇可能是追蹤圖書館的來源或共享版本。

0

你有一個靜態庫嗎?或者你有一個.lib文件,並假設它是一個靜態庫嗎?在Windows上,.lib庫可以是導入庫或靜態庫。一個導入庫與同名的DLL(例如kernel32.dll和kernel32.lib)一起創建。它在鏈接時用於填充可執行文件的導入地址表。靜態庫包含將在鏈接時複製到可執行文件中的代碼。

如果您有權訪問編譯器,另一個選項可能是創建一個使用靜態庫的擴展模塊。欲瞭解更多詳情,請參閱the Python docs