如何判斷乙個VC 編譯的靜態庫是x64編譯的還是x86編譯的呢?

時間 2021-06-07 01:23:46

1樓:

MinGW下可以使用objdump:

objdump -a 路徑

- -以下是範例輸出:

In archive d2d1.lib:

d2d1.dll: file format pe-x86-64

0/0 482 Jul 27 13:32 2009 d2d1.dll

d2d1.dll: file format pe-x86-64

0/0 247 Jul 27 13:32 2009 d2d1.dll

d2d1.dll: file format pe-x86-64

0/0 280 Jul 27 13:32 2009 d2d1.dll

d2d1.dll: file format pei-x86-64

0/0 47 Jul 27 13:32 2009 d2d1.dll

d2d1.dll: file format pei-x86-64

0/0 46 Jul 27 13:32 2009 d2d1.dll

d2d1.dll: file format pei-x86-64

0/0 52 Jul 27 13:32 2009 d2d1.dll

d2d1.dll: file format pei-x86-64

0/0 50 Jul 27 13:32 2009 d2d1.dll

d2d1.dll: file format pei-x86-64

0/0 48 Jul 27 13:32 2009 d2d1.dll注意輸出中的pei-x86-64字樣表明這是x86-64架構

MSVC可以用dumpbin:

2樓:陳良喬

可以用long的大小來判斷

static_assert(sizeof(long) >= 8,「64-bit code generation required for this library.」);

更多參考

c 如何在編譯期判斷乙個物件是否是字串字面值?

套路有點偏 這個是簡化版本,轉義符和寬字元都沒有處理,實用版本留給讀者思考好了 滾 include include define is literal x is literal f x,sizeof x 1 define is literal x is literal x constexpr inl...

既然編譯器可以判斷乙個函式是否適合 inline,那還有必要自己加 inline 關鍵字嗎?

飛鶴 沒必要加,是否inline完全編譯器決定的。只要函式短小,編譯器一般會自動內聯的。如果函式複雜,你即便加了inline編譯器也可能取消內聯的。 叛逆者 一般來說沒必要。作為成員函式來說,一行的短函式,你就實現在類定義裡面,不用寫inline。實現到cpp,也不用寫inline。沒有什麼理由讓乙...

有乙個困惑已久的問題 編譯 C C 編譯器 的編譯器是用什麼編譯的?

姚韌 C語言基於彙編,彙編基於機器語言,所以編譯器的作用是將高階語言翻譯為機器語言,並加入相應優化。在現代計算機技術中,通常都有作業系統,在作業系統裡有對應的編譯系統,所以很多時候會出現本應該是將高階語言轉換成機器語言的編譯軟體反而能夠用高階語言來編寫。應該使用組合語言作為中間需要進行轉換 所以,當...