是否可以創建單個二進制文件,使操作系統可以作爲可執行文件加載並運行,但是也可以動態鏈接?相同二進制文件中的可執行文件和DLL /共享庫
這對跨客戶端和服務器可以駐留在同一個可執行文件(甚至可能共享代碼)的應用程序間的資源共享很有用。
我感興趣的Linux以及Windows
是否可以創建單個二進制文件,使操作系統可以作爲可執行文件加載並運行,但是也可以動態鏈接?相同二進制文件中的可執行文件和DLL /共享庫
這對跨客戶端和服務器可以駐留在同一個可執行文件(甚至可能共享代碼)的應用程序間的資源共享很有用。
我感興趣的Linux以及Windows
看這裏,它可以在Windows下至少回答你的問題。 http://sandsprite.com/CodeStuff/Using_an_exe_as_a_dll.html
在Windows上,至少不支持此操作。您使用LoadLibrary
加載模塊,並且無法將可執行文件傳遞到LoadLibrary
,然後從該模塊執行代碼。 documentation說:
LoadLibrary也可以用來加載其他可執行模塊。例如,該函數可以指定一個.exe文件來獲取可以在FindResource或LoadResource中使用的句柄。但是,不要使用LoadLibrary運行.exe文件。而是使用CreateProcess函數。
最簡單的方式來實現你需要的是如下:
main
函數,或者如果這是一個GUI子系統應用程序,也許輸出WinMain
。您可以使用exe導出lib中的符號鏈接,並將另一個項目(例如DLL項目)鏈接到該lib。然後,您可以從exe本身動態加載DLL,並且一切正常。我不確定是否可以使用它,否則就像使用LoadLibrary
Razvan。