2013-10-15 30 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")