使用VS2005,我想創建一個DLL并自動導出所有符號,而無需在各處添加__declspec(dllexport)且無需手動創建.def文件。請問這是一種方法嗎?
3 回答

慕虎7371278
TA貢獻1802條經驗 獲得超4個贊
可以辦到...
我們在這里做的方法是使用鏈接器的/ DEF選項來傳遞包含出口列表的“模塊定義文件”。我從您的問題中了解到您了解這些文件。但是,我們不是手工完成的。導出列表本身是由dumpbin / LINKERMEMBER命令創建的,并通過簡單的腳本將輸出操縱為模塊定義文件的格式。
設置需要很多工作,但是它允許我們編譯在Windows上沒有Unix的dllexport聲明的情況下創建的代碼。

繁星coding
TA貢獻1797條經驗 獲得超4個贊
我編寫了一個小程序來解析.lib文件中“ dumpbin / linkermember”的輸出。我有超過8,000個函數引用要從一個DLL導出。
在DLL上執行此操作的問題在于,必須一次鏈接沒有導出定義的DLL才能創建.lib文件,然后生成.def,這意味著您現在必須再次將DLL與.def文件重新鏈接為實際導出參考。
使用靜態庫更容易。將所有源代碼編譯為靜態庫,運行dumbin,使用小程序生成.def,然后在導出名稱可用的情況下將庫鏈接到DLL中。
不幸的是,我的公司不允許我向您顯示來源。所涉及的工作是識別def文件中轉儲輸出中不需要哪些“公共符號”。您必須丟棄很多引用,NULL_IMPORT_DESCRIPTOR,NULL_THUNK_DATA,__imp *等。
- 3 回答
- 0 關注
- 1431 瀏覽
添加回答
舉報
0/150
提交
取消