[問題] #import dll file compiler error

看板C_and_CPP (C/C++)作者 (GARFIELD~)時間15年前 (2010/09/07 16:31), 編輯推噓3(3025)
留言28則, 3人參與, 最新討論串1/1
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: (題意請描述清楚) 欲#import "D:\\Serial.dll"這個位置的檔案時,compiler發出error訊息: [fatal error C1083: Cannot open type library file: 'd:\serial.dll': 載入類型程式庫/DLL 時發生錯誤。] 希望得到的正確結果: compiler無誤且確定dll被載入 程式跑出來的錯誤結果: fatal error C1083: Cannot open type library file: 'd:\serial.dll': 載入類型程式庫/DLL 時發生錯誤。 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) VC++2008 有問題的code: (請善用置底文標色功能) #import "D:\\Serial.dll" 補充說明: 我用了些其它的方法去取代#import,ex:#using,loadlibrary都是一樣讀不到。 也直接在xp作業系統windows資料夾底下隨意抓一個.dll檔也是不行。 請高手大大們指點,謝謝。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 222.156.254.82

09/07 21:39, , 1F
小弟我一直以為#import是拿來對.lib用的, 要load dll不
09/07 21:39, 1F

09/07 21:40, , 2F
是應該用dlopen(linux)或LoadLibrary(windows)這些API
09/07 21:40, 2F

09/07 21:41, , 3F
嗎?? (不然就是Linker設定設好讓對應.lib的.dll自己被找
09/07 21:41, 3F

09/07 21:42, , 4F
到). 能把妳LoadLibrary的code貼上來看看嗎?? 另外要注
09/07 21:42, 4F

09/07 21:43, , 5F
意一下LoadLibrary收哪一種cstr("" or L"" or _T""),
09/07 21:43, 5F

09/07 21:43, , 6F
失敗的話可以用GetLastError()跟在後面檢查ErrCode.
09/07 21:43, 6F

09/07 23:42, , 7F
喔喔~謝謝~我檢查一下loadlibrary的error一下
09/07 23:42, 7F

09/08 10:06, , 8F
說明一下,我是用getdll=LoadLibrary( _T("D:\\serial.dll"
09/08 10:06, 8F

09/08 10:07, , 9F
去load dll file,藉由回傳值是否為0來判斷是否成功
09/08 10:07, 9F

09/08 13:10, , 10F
你的 dll 是一個 COM server 嗎?
09/08 13:10, 10F

09/08 13:11, , 11F
#import 是用來 import COM server 的 type library 的.
09/08 13:11, 11F

09/08 13:11, , 12F
傳統的 dll 你要用 LoadLibrary 而不是用 #import
09/08 13:11, 12F

09/08 13:12, , 13F
若一直 LoadLibrary 失敗也有可能是 dependency 的問題
09/08 13:12, 13F

09/08 13:22, , 14F
抱歉~我不懂dll的檔案格式(初學mfc與c++),com sever是什麼?
09/08 13:22, 14F

09/08 13:23, , 15F
但是今天是要練習一個寫RS232界面的mfc程式,可以透過UART
09/08 13:23, 15F

09/08 13:23, , 16F
傳遞我key in的字串,透過button元件將他傳輸出去
09/08 13:23, 16F

09/08 13:24, , 17F
要加進去的dll檔是有關uart傳輸的funtion
09/08 13:24, 17F

09/08 13:25, , 18F
我剛試了一下,loadlibrary的值一直是null,getlasterror是0
09/08 13:25, 18F

09/08 13:25, , 19F
null就沒吃到dll,error是0等於正常,所以一直找不到q"q
09/08 13:25, 19F

09/08 13:27, , 20F
請問dependency是‥‥?
09/08 13:27, 20F

09/08 21:12, , 21F
dep簡單說就是你dll相依性, 比如你要load A.dll, 但是
09/08 21:12, 21F

09/08 21:13, , 22F
A.dll需要B.dll與C.dll, 其中B又需要D.dll, 那麼除了A
09/08 21:13, 22F

09/08 21:13, , 23F
以外, BCD這些.dll都不能欠; 另外抱歉看了您的error
09/08 21:13, 23F

09/08 21:14, , 24F
status, 還是沒有idea怎麼解決您的問題....Orz
09/08 21:14, 24F

09/10 15:56, , 25F
呃~最後發覺是這個dll是vc6.0制作的,環境換回Vc6.0可以用
09/10 15:56, 25F

09/10 23:41, , 26F
如果有source, 就用新的VC直接重編, 不然可能就要找到
09/10 23:41, 26F

09/10 23:42, , 27F
相對應於6.0版, 類似vcredict這類的套件, 或者找得到的
09/10 23:42, 27F

09/10 23:42, , 28F
話就把需要的其他.dll通通copy齊....@_@"
09/10 23:42, 28F
文章代碼(AID): #1CXVXJHA (C_and_CPP)
文章代碼(AID): #1CXVXJHA (C_and_CPP)