2012-08-13 53 views
0

說,在JPEG庫到底在我的系統:@符號的符號名的目標文件

$ > nm libjpeg.a | grep jpeg_finish_decompress 
00000510 T _jpeg_finish_decompress 

但openjpeg庫:

$ > nm lib/libopenjpeg.a | grep opj_decode_with_info 
00000240 T [email protected] 

後者有@ 12月末。我猜12是參數的總大小。
儘管如此,爲什麼一些符號有@結束? 當我試圖編譯mupdf庫時,出現了這個問題。它鏈接確定與例如jpeg 庫,但未能鏈接重新openjpeg。

回答

0

簡短的回答是名稱mangling。它甚至用於普通的c代碼,而不僅僅是C++。

下一個例子是從wikipedia。下一步功能定義:

int _cdecl f (int x) { return 0; } 
int _stdcall g (int y) { return 0; } 
int _fastcall h (int z) { return 0; } 

給這些符號:

_f 
[email protected] 
@[email protected]