【问题标题】:Import .TLB file gives "cannot open source file x.tlh"导入 .TLB 文件给出“无法打开源文件 x.tlh”
【发布时间】:2019-09-02 05:14:50
【问题描述】:

我正在将一个 VS2010 C++ 项目更新到 VS2019。

该项目正在导入几个 tlb 文件,对于每个文件,VS2019 都会给出一个错误,即它“无法打开 .tlh 文件的源文件”。

其中一个来自我也升级的 DLL(用 C# 编写,在 VS2019 中构建和注册 OK),另外两个是第 3 方 tlb 文件。

这是导入语句的示例(在我的头文件中)...

#import "../ExcelInterop/bin/Debug/ExcelInterop.tlb" raw_interfaces_only, raw_native_types, no_namespace, named_guids

从头文件位置算起的相对路径是正确的。

如何修复此错误,并让 VS2019 正确处理我的 .tlb 文件?

【问题讨论】:

  • 这样的事故会产生 很多 的错误信息,你很有可能把注意力集中在错误的信息上。可能就像构建顺序问题或忘记运行 VS 提升一样简单。将您看到的前 5 个错误和警告复制/粘贴到您的问题中,不要混淆它们。
  • 另外,删除所有中间目录和输出目录,以清除 VS2010 构建中可能存在的任何缓存信息。
  • 花了一段时间才回到这种情况,但是是的,我认为你是对的。我在一个新环境中重新审视了这个,并且通过干净的设置,错误没有发生。谢谢。
  • @user1961169 您能否详细说明您是如何解决该问题的?我有确切的问题,nthg 正在工作..
  • 我将项目存储在 SVN 中,所以我删除了所有内容,查看了 SVN 的最新更新。我可能还重新安装了 VS - 我不记得我是什么时候这样做的,但它应该是在这个问题发生的时候。我希望你能把它整理好。

标签: c++ com visual-studio-2019


【解决方案1】:

我找到了解决方法。如果您#import XXX.dll 并且编译器抱怨它“无法打开源文件 XXX.tlh”,只需在 #import 行上方添加此行:

#include "[XXX.tlh 的完整路径]"

并注释掉#import 行。它现在应该通过编译,因为文件 XXX.tlh 确实存在。成功后,将您的代码还原为原始代码。

【讨论】:

    猜你喜欢
    • 2017-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-17
    • 2021-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多