2010-09-20 93 views
0

我正在將程序移植到MS Windows。該程序使用動態加載的插件。主程序中的插件引用符號。如果沒有解決所有符號,我甚至無法通過鏈接器獲取DLL。有沒有辦法解決這個問題?DLL從其父(符號)獲取符號

回答

1

(對不起,我想評論,要求澄清,但我太新手的就可以了。)

當你說的插件「的主程序參考符號」,是關於引用函數還是數據?另外,你在使用什麼語言/編譯器?

假設它只是關於函數,並且在C/C++中:它可以從.EXE導出函數,就像它是一個DLL一樣。只需在.EXE中的函數定義前面指定__declspec(dllexport)即可。編譯.EXE文件時,應該生成一個.LIB文件,然後可以在鏈接每個插件時用作輸入。

+0

如果我理解正確,你建議我鏈接到程序的靜態庫版本。這是獲取函數副本的好主意,但如果函數引用全局變量(包括靜態),那麼這將不起作用,因爲它們將引用變量的不同副本。其實我只是假設它不起作用。 – Rubinium 2010-09-22 13:35:50

+0

不,實際上。導出庫是一個.LIB,它對鏈接器設置動態調用很有用。當你調用有問題的函數時,它仍然是對DLL的調用(或者在這種情況下是EXE)。 – 2011-05-25 17:28:55