使用visual studio导入lib文件

时间:2013-10-15 14:44:23

标签: c++ visual-studio-2010 dll

我正在尝试导入如下文件:

#import "francais.dll"

它告诉我它无法打开源文件“C:/xxxx/Proj/Release/francais.tlh”

库文件存在于Proj。

如何解决?

4 个答案:

答案 0 :(得分:10)

它不是“库文件”,它是一个COM服务器。 #import指令从嵌入在francais.dll中的类型库自动生成.tli和.tlh文件。没有明显的原因导致它无法加载.tlh文件,该DLL可能有问题。很难从这里看到。确保您没有忽略先前的错误,从错误列表窗口的顶部开始。

作为基本检查,您可以自己查看该类型库。从Visual Studio命令提示符运行OleView.exe并使用文件+视图Typelib,选择该DLL。您需要查看类型库的内容,并将其反编译为IDL。

您也可以在VS中看到它,使用File + Open + File并选择DLL。您将看到DLL中嵌入的资源,需要一个标记为“TYPELIB”的节点,其中一个资源的ID为1,即实际类型库。如果这两个验证出现任何问题,那么#import指令也不太可能正常工作。

请注意,尝试在Release目录中找到该文件很奇怪。您通常始终以调试配置开始。

答案 1 :(得分:9)

您需要将.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

答案 2 :(得分:3)

如果您坚持将Dll与您可以使用的代码耦合(不是VS的所有编译器支持):

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

对COM库使用#import而不是标准Dll

答案 3 :(得分:0)

我在Visual Studio 2015中遇到过与COM服务器MSO.DLL(MS Office 14/2010)类似的问题。

首次构建/编译后,(红色)IntelliSense警告消失! 我真正的问题是确切的道路。我必须手动编写它。复制/粘贴vom Explorer无法正常工作。

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