name-mangling

    32熱度

    2回答

    我發現了一些類似的問題(例如this,that或this),但沒有一個幫助我解決了我的問題。我有一個* .so文件(從gnss-sdr核心),作爲表示由: $nm libgnss_system_parameters_dyn.so | c++filt |grep Gps_Eph 包含符號Gps_Ephemeris::Gps_Ephemeris(),這應該是一個構造函數。 我已經寫了一些最少的代碼

    0熱度

    1回答

    我使用GCC編譯C代碼,並在Windows上與NASM彙編一些x86代碼。現在 ,GCC在默認情況下(我一直沒能找到一個選項來改變這一點)前添加下劃線_所有外部符號名(和預期的名稱)。 我需要這個彙編代碼來與Windows和Linux上的GCC一起工作,並希望儘可能避免黑客行爲(和代碼重複;我首先有單獨的用於Windows/Linux的.s文件)。 我發現了(和使用)了NASM中的--prefix

    11熱度

    3回答

    我有一個函數類方法的C++函數錯位的名字,而ValueHolder :: PRINTVALUE class ValueHolder { public: void printValue(); } ; 如何確定在編譯時(或運行時),它的重整名稱。 比如我想做到這一點: const char *mangled_name = GetMangledNameOfSymbol(&ValueH

    0熱度

    1回答

    我想用JMeter來調用一個RPC/SOAP Web服務,當我調用服務時,我的名字空間被從實際值改爲NS1。 <?xml version="1.0" encoding="UTF-8"?> <wpc:invoke xmlns:wpc="http://wpc.ibm.com"> <wpc:envelope communicationVersion="5.3"> <wpc:WPC

    17熱度

    2回答

    和objdump我的.o文件顯示,我有兩個不同的析構函數爲同一類。爲什麼? Disassembly of section .text._ZN1AD0Ev: 0000000000000000 <_ZN1AD0Ev>: 0: 53 push %rbx 1: be 00 00 00 00 mov $0x0,%esi 6: 48 89 fb mov %

    1熱度

    1回答

    當我創建了一個模塊級變量__並嘗試在類的一個方法內使用(使用global關鍵字)訪問它時,名稱發生了變形。 讓我給個例子: __test = 'asd' # module level variable with __ class TestClass(object): def test(self): global __test print(__test) #

    0熱度

    1回答

    我使用cygwin生成了dll文件,我試圖在Visual Studio中使用它。 我得到了DEF(.def)文件,這個文件中包含了錯誤的函數名稱,作爲cygwin編譯的一部分。 使用lib.exe程序作爲MSVC的一部分,我生成了.lib文件。 在MSVC中,我編寫了一個程序,它使用創建的lib文件中的函數。 我得到了鏈接器錯誤。 當我檢查了重名的名稱時,DEF文件中的名稱與MSVC中引發的錯誤中

    4熱度

    1回答

    基於我的理解,名稱修飾用於存在函數重載時,以便可以區分具有相同名稱的函數。 但我已經注意到,名稱修改也用於WinMain()函數(它不會超載)。在命名後,它變成[email protected]。 那麼爲什麼名稱使用WinMain()函數? 這是我使用的代碼: #include <windows.h> int WINAPI WinMain(HINSTANCE hInstance, HINSTA

    0熱度

    1回答

    我知道C++程序是編譯器相關的,因爲名稱會變形。所以我有關於Node.js的C++插件的下列問題。 我們如何知道哪臺C++編譯器用於我的機器(Mac,Windows或Linux)上的預構建Node.js發行版? 如果我知道安裝的Node.js的確切編譯版本,那麼我應該使用相同的編譯器來開發C++插件,對嗎? 謝謝。

    0熱度

    2回答

    我用g++編譯了一個庫,我想用gcc來鏈接它。 問題是當鏈接反對我得到一個錯誤: 未定義的引用「functionName` (functionName是在庫中的函數名) 雖然功能存在於符號列表中,並在鏈接時指定gcc的路徑。 這是因爲該功能顯示在列表中與周圍的字符(我認爲這是壓倒一切?): Z12functionNameiSt9__va_list 我知道要刪除這些字符我應該圍繞與extern "C