我從頭開始設計一個模塊化軟件基礎結構,其中不同的DLL擁有不同的業務邏輯和應用程序邏輯。每個DLL通過常見的DLL調用都有自己的初始化/非初始化機制。如何讓多個DLL實例能夠訪問對方?
比方說,我有一個使用這些各種不同的DLL的主機應用程序。所有這些DLL都由主機應用程序通過LoadLibrary
加載和初始化。當一個DLL初始化時,它實例化一些內部全局變量。我可以使用另一個DLL連接到這個並訪問相同的實例,而無需通過主機進行路由嗎?當然,從另一個DLL中調用LoadLibrary
會創建另一個實例,並且直接調用DLL也不會被初始化/實例化?
我如何從一個DLL到另一這是由同一個主機應用程序初始化訪問實例化的數據?
例如,數據庫連接。我使用獲取/執行等方法在一個DLL中封裝了一個ADO連接。我希望一個DLL使用從DB DLL中的主機應用程序實例化的相同連接。
* ..會創建另一個實例.. * - 如果您沒有釋放該庫,則不需要。在可執行文件加載該庫後,* other *庫將使用已映射到可執行文件地址空間的* instance *。您可以通過導出的函數將全局數據導出到其他庫和可執行文件,只要您不釋放庫,它就不會再次初始化。庫不會自行運行,它們是可執行的運行代碼。 –
只是澄清:加載已加載的DLL的新可執行程序將重新使用相同的代碼但不是相同的數據(除非它在共享數據段中聲明 - 某些Delphi不允許定義)。 – HeartWare