我有一個應用程序和DLL文件中的幾個插件。插件通過導出庫使用來自 應用程序的符號。該應用程序鏈接在幾個靜態庫中,這是大多數符號的來源。只要應用程序使用符號,此工作正常。如果符號沒有在那裏使用,編譯DLL時會出現鏈接器錯誤。使用MSVC強制符號導出
如何強制導出只在插件中使用的符號?
爲了觸發我已經試過像這樣的出口:
class MyClassExporter
{
MyClass mInstance;
public:
MyClassExporter() {}
};
static MyClassExporter TheMyClassExporter;
靜態庫提出申請,迫使出口,沒有工作之一。
回覆Greg(謝謝你的回答)並澄清:我想強制導出的類是MyClass(它有__declspec(...)定義,取決於我想導出還是導入) 。 MyClassExport是我試圖強制將未使用的(根據應用程序)符號包含到應用程序中的。我想'觸摸'這些符號,以便鏈接器將它們識別爲已使用並將它們包含到應用程序中,以便它可以將這些符號導出到我的插件中。將靜態庫鏈接到插件不是一種選擇,因爲它們包含將被複制的單例(應用程序和DLL都有自己的靜態變量副本)。
我需要從靜態庫導入並導出到插件,因爲我有單身人士,如果我將它們鏈接到DLL(DLL和應用程序有自己的靜態變量)會得到重複。你的第一句話解釋了這個問題:我正在尋找一種方法來強制收錄。 – torque 2009-01-15 08:23:47