【发布时间】:2011-03-04 06:21:39
【问题描述】:
我正在尝试构建一个旧版本的应用程序,其中包含用 Visual Studio 2003 编写的 VC++ 项目。
我的操作系统是 Windows 7 Enterprise(64 位)。 当我尝试构建解决方案时,出现以下错误:
- 错误 C4772:#import 引用了缺少类型库中的类型; '__missing_type__' 用作占位符
- 致命错误 C1084:无法读取类型库文件:“Smegui.tlb”:加载类型库/DLL 时出错。
他们都抱怨以下导入语句:
#import "Smegui.tlb" no_implementation
这不是文件路径不正确的情况,因为重命名 Smegui.tlb 文件会导致编译器抛出另一个错误,说它找不到库。
Smegui 来自另一个依赖于它的应用程序。我想也许我错过了一个 dll,但没有像 Smegui.dll 这样的东西。
我所知道的 .tlb 文件是一个类型库,您可以使用 tlbexp.exe 或 regasm.exe 从程序集创建它们(后者也使用 COM 注册程序集)
还有一个 Apache Ant 构建脚本,它使用自定义任务调用 devenv.com 来构建项目。这与构建服务器最初用于构建应用程序的脚本相同。当我尝试运行它时,它给了我同样的错误。
关于这件事最奇怪的是,我知道它应该可以工作,因为它都是从 subversion 中重新检查出来的。我尝试了管理员与用户提升、VS 与 Ant 构建、清理、发布的许多不同组合。
我已经成功构建了大约 5 次,但构建似乎是不确定的。
如果有人能阐明这个 tlb 东西是如何工作的,或者这个错误可能意味着什么,我将不胜感激。
【问题讨论】:
标签: visual-c++ dll typelib