因爲項目需要,要使用CxImage進行圖像處理,於是開始了學習之旅。但很不順利....
其實CxImage提供了這麼多的工程,編譯出來無非就是個庫,但我確出現了個鏈接的錯誤,就這個鏈接錯誤花了我兩天的時間解決。
當出現dll連接錯誤的時候,我的第一感覺就是,調用約定有問題!但找了一下,沒有找到調用約定的問題,類都是使用-decse 的調用約定。
接着我想是我的工程配置有問題,於是我去比對CxImage提供的demo工程,還是沒有發現有什麼不對的地方。應該說我的解決問題的方向是對的,可惜沒有深入的去找到問題。第二天的時候,才沉下心了,找到了真正的問題。
因爲CxImage提供的工程編譯出來的是multebyte 不是Unicode 所以編譯出來的lib是不一樣的,所以會出現無法鏈接的問題!
bool __thiscall CxImage::Load(wchar_t const *,unsigned long)"
這是用工具看dll導出的名稱?Load@CxImage@@QAE_NPBDK@Z
這是無法鏈接工程提示的名稱?Load@CxImage@@QAE_NPB_WK@Z
比對後發現就D 和-W的不同
查看網絡資料,D表示char -Wb表示wchar 問題出來拉!
查看工程屬性general 的char set(字符集)果然是這裏不同!!!!
總結一下:
當發現DLL無法鏈接的時候,問題肯定出在lib,這時你要看你的lib是不是最新的,和.h文件的描述是一致的。
注意調用約定的問題!
注意UNICODE的問題!
注意dll hell!!
PS:文本比較差,歡迎各位就相關問題進行諮詢。Q:530066322