VC 裡對32和64版本鏈結的不同處理

2021-06-28 07:41:10 字數 901 閱讀 2209

遇到個奇怪問題,有個第三方提供的動態鏈結庫包括了ncmapi.lib,ncmapi.dll, ncmapi.h三個檔案。

我用mfc寫乙個測試程式作為呼叫方,使用下面的宣告時,得到以下鏈結錯誤

extern

"c"_declspec(dllimport)ncm_launcher_t* ncm_launcher_new();

error     2             error lnk2001: unresolved external symbol __imp__ncm_launcher_new

為了檢視第三方庫,我用dumpbin-exports ncmapi.lib得到下面的結果,可以看到庫檔案裡包含了函式ncm_launcher_new,但函式名前面沒有任何字首

microsoft (r) coff/pe dumperversion 12.00.21005.1

dump of file ncmapi.lib

file type: library

exports

ordinal    name

ncm_launcher_new

。。。。。。

summary

c0 .debug$s

14 .idata$2

14 .idata$3

8 .idata$4

8 .idata$5

c .idata$6

主程式要找帶字首的函式,庫函式不帶字首,當然link不過。根據我的經驗,以前類似情況裡第三方庫檢視到的函式是帶有下劃線字首的。這個不帶字首的版本是怎麼來的?

原來這套庫提供了32位和64位兩種版本,32位的帶字首,64的不帶。所以把庫換成32位的,問題解決了。或者在configration manager裡new乙個x64的設定,把主程式變成64的也同樣可以。

Windbg 32位版本和64位版本的選擇

習慣了vsiual studio的兄弟們可能會因為先入為主的原因以為所有的偵錯程式都應該像它那樣,其實不然,當你安裝 debugging tools for windows的時候,你將發現有兩個系列的工具,一系列32位的工具和一系列64位的工具。這讓人覺得和費解,因為在我們安裝 microsoft ...

zabbix2 4版本公升級到3 2版本

zabbix3.2版本原始碼安裝完畢,目前將2.4版本公升級到3.2版本操作,只需要將2.4的資料庫備份匯出,然後將其匯入3.2版本的資料庫即可。1 停止zabbix相關服務 service zabbix server stop service zabbix agentd stop service ...

怎樣檢視電腦系統版本 系統32版本與64位的區別

電腦windows系統有32位和64位的劃分。二者之間,到底有何不同呢?我來給你詳細解說。一 兩者之間的相容性不同。32位的作業系統上,只能支援基於32位的軟體,不能執行64位的軟體 而64位的系統能向下相容,向下既能相容基於32的軟體,也相容基於64位的軟體。64位系統在c盤根目錄中會有progr...