看板 C_and_CPP 關於我們 聯絡資訊
( *[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
VictorTom:小弟我一直以為#import是拿來對.lib用的, 要load dll不 09/07 21:39
VictorTom:是應該用dlopen(linux)或LoadLibrary(windows)這些API 09/07 21:40
VictorTom:嗎?? (不然就是Linker設定設好讓對應.lib的.dll自己被找 09/07 21:41
VictorTom:到). 能把妳LoadLibrary的code貼上來看看嗎?? 另外要注 09/07 21:42
VictorTom:意一下LoadLibrary收哪一種cstr("" or L"" or _T""), 09/07 21:43
VictorTom:失敗的話可以用GetLastError()跟在後面檢查ErrCode. 09/07 21:43
roinla:喔喔~謝謝~我檢查一下loadlibrary的error一下 09/07 23:42
roinla:說明一下,我是用getdll=LoadLibrary( _T("D:\\serial.dll" 09/08 10:06
roinla:去load dll file,藉由回傳值是否為0來判斷是否成功 09/08 10:07
layan:你的 dll 是一個 COM server 嗎? 09/08 13:10
layan:#import 是用來 import COM server 的 type library 的. 09/08 13:11
layan:傳統的 dll 你要用 LoadLibrary 而不是用 #import 09/08 13:11
layan:若一直 LoadLibrary 失敗也有可能是 dependency 的問題 09/08 13:12
roinla:抱歉~我不懂dll的檔案格式(初學mfc與c++),com sever是什麼? 09/08 13:22
roinla:但是今天是要練習一個寫RS232界面的mfc程式,可以透過UART 09/08 13:23
roinla:傳遞我key in的字串,透過button元件將他傳輸出去 09/08 13:23
roinla:要加進去的dll檔是有關uart傳輸的funtion 09/08 13:24
roinla:我剛試了一下,loadlibrary的值一直是null,getlasterror是0 09/08 13:25
roinla:null就沒吃到dll,error是0等於正常,所以一直找不到q"q 09/08 13:25
roinla:請問dependency是‥‥? 09/08 13:27
VictorTom:dep簡單說就是你dll相依性, 比如你要load A.dll, 但是 09/08 21:12
VictorTom:A.dll需要B.dll與C.dll, 其中B又需要D.dll, 那麼除了A 09/08 21:13
VictorTom:以外, BCD這些.dll都不能欠; 另外抱歉看了您的error 09/08 21:13
VictorTom:status, 還是沒有idea怎麼解決您的問題....Orz 09/08 21:14
roinla:呃~最後發覺是這個dll是vc6.0制作的,環境換回Vc6.0可以用 09/10 15:56
VictorTom:如果有source, 就用新的VC直接重編, 不然可能就要找到 09/10 23:41
VictorTom:相對應於6.0版, 類似vcredict這類的套件, 或者找得到的 09/10 23:42
VictorTom:話就把需要的其他.dll通通copy齊....@_@" 09/10 23:42