2013-10-31 66 views
0

是否可以創建單個二進制文件,使操作系統可以作爲可執行文件加載並運行,但是也可以動態鏈接?相同二進制文件中的可執行文件和DLL /共享庫

這對跨客戶端和服務器可以駐留在同一個可執行文件(甚至可能共享代碼)的應用程序間的資源共享很有用。

我感興趣的Linux以及Windows

回答

3

在Windows上,至少不支持此操作。您使用LoadLibrary加載模塊,並且無法將可執行文件傳遞到LoadLibrary,然後從該模塊執行代碼。 documentation說:

LoadLibrary也可以用來加載其他可執行模塊。例如,該函數可以指定一個.exe文件來獲取可以在FindResource或LoadResource中使用的句柄。但是,不要使用LoadLibrary運行.exe文件。而是使用CreateProcess函數。

最簡單的方式來實現你需要的是如下:

  • 把所有的代碼爲您的應用程序到DLL。
  • 從該DLL中導出所需的任何函數。
  • 還導出main函數,或者如果這是一個GUI子系統應用程序,也許輸出WinMain
  • 創建一個簡單的可執行程序,鏈接到您的DLL並將其主函數委託給DLL導出的主程序。
0

您可以使用exe導出lib中的符號鏈接,並將另一個項目(例如DLL項目)鏈接到該lib。然後,您可以從exe本身動態加載DLL,並且一切正常。我不確定是否可以使用它,否則就像使用LoadLibrary

Razvan。

相關問題