【问题标题】:Unmanaged C++ tlh file not updating?非托管 C++ tlh 文件未更新?
【发布时间】:2010-11-30 17:47:28
【问题描述】:

我有一个 IDL 文件,其中包含一些接口。

[
   object,
   uuid(newguid),
   dual,
   helpstring("NewInterface Interface"),
   pointer_default(unique)
]
interface INewInterface: IOldInterface
{
   [id(newid), helpstring("method NewMethod")] HRESULT NewMethod([in] BSTR bstrParam );
}

但是当我编译我的代码时,它看不到我的新界面。此外,当我打开 .tlh 文件时,它还没有更新以显示新界面。

对我需要做什么有什么想法吗?

编辑: 进口是通过

#import "File.tlb" raw_interfaces_only no_namespace

tlb 文件似乎也没有更新:(

【问题讨论】:

  • 我猜你只有两份 .tlb 文件,其中一份在你重新编译 COM 服务器时实际更新,另一份是你#import。您需要准确导入编译 .idl 文件时生成的 .tlb 文件。

标签: c++ interface typelib


【解决方案1】:

.tlh.tli 文件应在 .tlb 时间戳已更改并且您正在 #importing 时更新。 .tlb 文件是编译 .idl 文件时的输出。所以你应该检查

  • 如果.idl 文件的编译设置正确(取决于配置!)
  • 如果导入的.tlb 确实与编译的相同(检查包含路径),如评论中描述的sharptooth

除此之外,手动清除/删除所有输出文件有时会有所不同。虽然,我不得不说,使用项目文件的 MS 工具链的常见问题是它重新编译的频率太高,而不是不够频繁,所以除了配置问题之外,我还没有遇到你描述的这样的问题。

【讨论】:

  • 通过重启解决了错误。不过感谢您提供的信息。
  • 我遇到了类似的问题。这是由于#import-ing 文件没有被重建,所以导入没有发生,因此.tlh 没有重新生成。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-01
  • 1970-01-01
  • 2013-01-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多