我有一個用C++編寫的庫(我有它的完整源代碼)。由於其LGPL許可證,我只能通過動態鏈接(靜態鏈接可以正常工作)將其與我公司的專有軟件一起使用。所以,我需要將它構建到一個DLL中。但是,庫很大,不會導出任何內容(因此在類和全局函數名稱前面沒有.def文件和__declspec(dllexport)統計信息)。所以,當我構建一個dll時,它沒有用,因爲它沒有導出名稱,所以它不會鏈接。 在我們公司,我們使用的是MS Visual C++,默認情況下 不會導出名稱(例如,當通過Windows上的MINGW運行時,GNU GCC)。因此,我目前看到的唯一選擇是將__declspec(dllexport)放在我正在使用的庫中的每個名稱前面(並且有數千個),或者爲這些名稱編寫一個.def文件。但即使我這樣做了,我也無法使用該庫的下一個版本,因爲我必須再次完成這項工作。我正在尋找一個工具來執行這些導出操作,或者生成一個.map文件,但是沒有一個真正執行這個特定的任務 (有一些DEF生成器,但它們大多搜索DUMPBIN/EXPORT的結果,在我的情況下,它沒有提供任何結果) 。我在網上搜索了兩天的答案,但沒有好的結果。如何自動導出在DLL中使用的C++源名稱
最好的問候, 舍甫琴科
.map file?我認爲VS可以生成.map文件。 – fefe 2012-01-03 14:39:35
可能的重複:http://stackoverflow.com/questions/225432/export-all-symbols-when-creating-a-dll – Asaf 2012-01-03 15:20:26
你確定LGPL不允許你靜態鏈接庫嗎?這不是我的理解。 (有一件事,LGPL發明之前*動態鏈接被髮明之前?) – 2012-01-05 01:00:31