【问题标题】:importing a lib file using visual studio使用 Visual Studio 导入 lib 文件
【发布时间】:2013-10-23 10:20:09
【问题描述】:

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

#import "francais.dll"

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

库文件存在于 Proj 中。

如何解决?

【问题讨论】:

  • 你是否将dll的路径添加到项目属性中?
  • @zero298 我不明白。对不起。你的意思是,我是否将 francais.dll 添加到我的项目中?
  • 另外,我不确定.tlh 文件是什么。那是源文件/头文件吗?

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


【解决方案1】:

我在 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")

【讨论】:

    【解决方案2】:

    它不是一个“库文件”,它是一个 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 指令也不太可能起作用。

    请注意,它尝试在 Release 目录中查找文件很奇怪。您通常总是从 Debug 配置开始。

    【讨论】:

      【解决方案3】:

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

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

      #import 用于 COM 库而不是标准 Dll

      【讨论】:

        【解决方案4】:

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

        2) 打开配置properties->linker。然后在general 选项卡中,将目录添加到您的"Additional Library Directories"

        3)然后点击general正下方的input,将lib的名称添加到"Additional Dependencies"

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-05-22
          • 1970-01-01
          • 2017-03-04
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多