我正在尝试创建一个ManagedWrapper dll,可以从不使用/ clr开关编译的MFC应用程序调用。在我的测试MFC的标题中,我声明了以下内容:
#import "ManagedProxy.tlb"
using namespace ManagedProxy;
当我尝试编译测试MFC应用程序时,我收到错误C2871:'ManagedProxy':具有此名称的命名空间不存在。我相信这最近一直有效。如果我指定了错误的tlb文件名,我会收到编译错误C1083,这表明正确加载了tlb文件。
为什么Visual Studio现在在抱怨,为什么之前有效?
增加:
我发现在将命名空间更改为ManagedProxy之后我的代理停止了工作。我已经重新编译了Managed项目,并且本机应用程序有一个Additional Include Path,即托管项目的Debug文件夹,因此它应该引用最新的tlb,但事实并非如此。我尝试了tlb的绝对路径,清理并重建了项目而没有运气。
为什么tlb不是命名空间改变?
加成 使用对象浏览器查看TLB中的内容,并将命名空间ManagedProxy以某种方式重命名为其他内容。我也缺少几个接口,尽管它们标有ComVisible(true)。
有人请帮忙....
TIA。
答案 0 :(得分:2)
您可以在导入时重命名命名空间。
#import "ManagedProxy.tlb" rename_namespace("ManagedProxy")
答案 1 :(得分:0)
未显示的界面可能未标记为公开。