1. 程式人生 > 其它 >qt 顯式連結 匯入多個dll庫衝突

qt 顯式連結 匯入多個dll庫衝突

qt 顯式連結 dll庫 QSerial QTCPSocket 物件衝突問題

公司的專案需要匯入多個dll庫,其中都用到了串列埠和tcp通訊,最後問題解決說到底還是自己對顯式連結的不熟悉導致,在這個點上卡了很久,希望遇到和我一樣問題的朋友們可以快速解決。

在呼叫QLibrary的第二步,resolve()函式需要用到dll庫的匯出函式名,由於我自己一開始沒有加上extern “C",因為我自己下了個DLL函式檢視器,裡面他會自動給函式名前後加上一些奇怪的字元,我就直接複製過來,如圖:

這樣在只匯入一個dll庫的時候是沒有影響的,但是多個庫匯入就會發生衝突,程式會直接發生段錯誤,異常終止。

我請教了一下公司的前輩,告訴我寫個匯出函式,封裝一個類物件,通過物件指標呼叫dll庫的方法,可惜我太菜了,琢磨不明白,想起之前網上說通過extern ”C“ 可以讓匯出函式名正常,就嘗試了一下:

更改前:

更改後:

放的是兩個庫的匯出類標頭檔案,函式不一樣,但大概意思就是上面的改到下面的這種形式,然後執行就不會衝突啦,別忘記把resolve函式的引數改成正常的。