2013-10-15 48 views
4

我想導入如下文件導入一個lib文件:使用Visual Studio的

#import "francais.dll" 

它說,我認爲它無法打開源文件「C:/xxxx/Proj/Release/francais.tlh 「

庫文件存在於Proj中。

如何解決?

+0

您是否已將路徑添加到項目屬性的DLL? – zero298

+0

@ zero298我不明白。抱歉。你的意思是,我添加了francais.dll到我的項目中嗎? – MelMed

+0

另外,我不確定'.tlh'文件是什麼。這是一個源文件/頭文件嗎? – zero298

回答

7

您需要將.lib添加到項目屬性中。你有一個.lib去配合DLL嗎?處理類似問題的另一個問題可以在這裏找到:How do I use a third-party DLL file in Visual Studio C++?

要注意的主要問題是您是否有一個.lib與您的DLL一起去。我之前完成的另一件事,但我不會完全建議將DLL複製到您的可執行文件相同的目錄。每當加載DLL時,Windows會自動檢查的可執行文件路徑

1)在菜單欄(窗口頂部)點擊project - >properties(或ALT + F7)。

Project Properties

2)打開配置properties - >linker。然後在general選項卡中,將目錄添加到您的"Additional Library Directories"

Include Dirs

3)然後點擊input右下方general並添加LIB的名字到"Additional Dependencies"

Additional Libs

+0

我接受你的答案。謝謝! – MelMed

2

如果你堅持從代碼,你可以連接你的DLL使用(不是所有的編譯器支持,VS都是這樣):

#pragma comment(lib, "path_to_lib\\libname.lib") 

使用#import爲COM庫不用於標準Dll

9

它不是一個「庫文件」,它是一個COM服務器。 #import指令從嵌入在francais.dll中的類型庫中自動生成一個.tli和一個.tlh文件。沒有明顯的理由說明它無法加載.tlh文件,可能是該DLL有問題。很難從這裏看到。請確保您不會忽略較早的錯誤,請從錯誤列表窗口的頂部開始。

作爲基本檢查,您可以自己查看該類型庫。從Visual Studio命令提示符運行OleView.exe並使用File + View Typelib,選擇該DLL。您需要查看類型庫的內容,反編譯爲IDL。

你也可以在VS本身看到它,使用File + Open + File並選擇DLL。您將看到嵌入在DLL中的資源,需要一個標有「TYPELIB」的節點,其中一個資源的ID爲1,這是實際的類型庫。如果這兩個驗證出現任何問題,那麼#import指令也不可能工作。

請注意,它試圖在發佈目錄中查找文件很奇怪。你通常總是從Debug配置開始。

0

我similiar麻煩COM服務器MSO.DLL(MS Office 14的/ 2010)在Visual Studio 2015年

(紅色)預警智能感知先建後消失/編譯! 我真正的問題是確切的路徑。我必須手動編寫它。複製/粘貼vom Explorer不起作用。

#import "C:\Program Files\Common Files\microsoft shared\OFFICE14\MSO.DLL" no_implementation rename("RGB", "ExclRGB") rename("DocumentProperties", "ExclDocumentProperties") rename("SearchPath", "ExclSearchPath")