我正在將大型C++應用程序從Linux(gcc)移植到Windows(Visual C++ 2008),並且在插件方面存在鏈接器問題。在Linux上這不是問題,因爲.so支持運行時符號查找,但dll似乎不支持這一點。Visual C++ - 針對EXE鏈接插件DLL?
一些背景信息: 承載腳本環境的應用程序(主機)爲插件(在運行時通過腳本API調用而加載的共享庫)提供接口,允許擴展主機和腳本API而無需重新編譯主機應用程序。在Linux上,這只是將主機應用程序的頭文件包含在插件源中的問題,但在Windows中,我收到鏈接程序錯誤。我不確定我需要鏈接的Visual C++來解決這些符號。
我們的一個依賴項(開源,LGPL)具有預處理程序聲明,它用於將__declspec(dllexport)和__declspec(dllimport)插入到它的標題中。一些先前的研究表明,我可能也必須這樣做,但我想確保在修改一大堆核心標題之前。 (我以前能夠在MinGW上工作,但是我們已經決定支持Visual Studio是這類商業項目的必備條件。)
我的問題,簡而言之:如何鏈接運行時環境,加載DLL對Visual C++中的宿主exe文件?
編輯:澄清用一個例子的問題,我在我的主機應用程序的一類,對象,其代表了可以由腳本訪問的對象的基本類型。在我的插件中,我有許多類,它們擴展了對象以執行其他功能,例如集成網絡支持或新的視覺元素。這意味着我的dll必須鏈接主機exe中的符號,我不知道該怎麼做。
我有點麻煩纏着這個。如果你有一個具體的例子,並簡化爲幾行代碼,也許這可能會幫助大家幫助你。 – ojblass 2009-04-20 23:36:54