3 回答

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

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