第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C ++ DLL導(dǎo)出:修飾/拼寫的名稱

C ++ DLL導(dǎo)出:修飾/拼寫的名稱

C++
肥皂起泡泡 2019-12-13 15:10:57
創(chuàng)建了基本的C ++ DLL,并使用模塊定義文件(MyDLL.def)導(dǎo)出了名稱。編譯后,我使用以下命令檢查導(dǎo)出的函數(shù)名稱dumpbin.exe :SomeFunction但是我看到的是:SomeFunction = SomeFunction@@@23mangledstuff#@@@@為什么?導(dǎo)出的函數(shù)看起來沒有修飾(尤其是與不使用Module Def文件相比),但是其他內(nèi)容又如何呢?如果我使用dumpbin.exe任何商業(yè)應(yīng)用程序中的DLL進行清潔,那么您都可以:SomeFunction沒什么...我還嘗試了刪除模塊定義,并使用“ C”導(dǎo)出樣式導(dǎo)出名稱,即:extern "C" void __declspec(dllexport) SomeFunction();(僅使用“ extern“ C”不會創(chuàng)建導(dǎo)出函數(shù))但是,這仍會創(chuàng)建相同的輸出,即:SomeFunction = SomeFunction@@@23mangledstuff#@@@@我還嘗試了該#define dllexport __declspec(dllexport)選項,并毫無問題地創(chuàng)建了LIB。但是,我不想為使用C#應(yīng)用程序中的DLL的用戶提供LIB文件。它是普通的C ++ DLL(非托管代碼),僅使用簡單的標頭和代碼即可使用C ++進行編譯。沒有Module Def,我將無法處理導(dǎo)出的函數(shù)(我可以創(chuàng)建一個靜態(tài)庫并使用LIB沒問題。我試圖避免這種情況)。如果使用extern "C" __declspec(dllexport) OR或 Module Definition,我得到的似乎是未修飾的函數(shù)名稱...唯一的問題是它后面跟有一個“ =”,并且看起來像該函數(shù)的修飾版本。我想擺脫“ =”之后的內(nèi)容-或至少了解其中的原因。就目前而言,我非常確定我可以使用P / Invoke從C#調(diào)用該函數(shù)...我只是想避免在“ =”末尾出現(xiàn)垃圾。我愿意就如何更改項目/編譯器設(shè)置提出建議,但我只是使用了標準的Visual Studio DLL模板-沒什么特別的。
查看完整描述

3 回答

?
瀟湘沐

TA貢獻1816條經(jīng)驗 獲得超6個贊

您可以通過關(guān)閉調(diào)試信息生成來獲得所需的內(nèi)容。項目+屬性,鏈接器,調(diào)試,生成調(diào)試信息=否。


自然,您只想針對Release版本執(zhí)行此操作。已經(jīng)以這種方式設(shè)置的選項。


查看完整回答
反對 回復(fù) 2019-12-14
?
素胚勾勒不出你

TA貢獻1827條經(jīng)驗 獲得超9個贊

根據(jù)經(jīng)驗,如果__stdcall在函數(shù)簽名中使用,請小心。使用__stdcall,該名稱將在某種程度上保持混亂狀態(tài)(您很快就會發(fā)現(xiàn))。顯然,存在兩種級別的重整,一種extern "C"在C ++級別進行處理,但沒有處理由引起的另一級名稱整改__stdcall。多余的修改顯然與重載有關(guān)-但我不確定。


查看完整回答
反對 回復(fù) 2019-12-14
  • 3 回答
  • 0 關(guān)注
  • 397 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號