.NET进程外#服务器的问题
在C++程序中,我试图#导入.NET进程外的TLB服务器。.NET进程外#服务器的问题
我得到这样的错误:
Z:\ server.tlh(111):错误C2146:语法错误:缺少 ';'标识符 '之前的GetType'
Z:\ server.tlh(111):错误C2501: '_TypePtr':缺少存储类或类型说明
Z:\ server.tli(74):错误C2143:语法错误:缺少';'前 '标记:: ID'
Z:\ server.tli(74):错误C2433: '_TypePtr':对数据声明不允许 '内联'
Z:\ server.tli(74):错误C2501: '_TypePtr':缺少存储类或类型说明
Z:\ server.tli(74):致命错误C1004:意外的文件结束发现
的TLH看起来像:
_bstr_t GetToString();
VARIANT_BOOL Equals (const _variant_t & obj);
long GetHashCode();
_TypePtr GetType();
long Open();
我并不是真的对像GetType(),Equals()等基对象的.NET对象方法感兴趣,但GetType()似乎是造成问题。
一些谷歌的研究表明我可以#import mscorlib.tlb
(或把它放在路径中),但我无法得到的编译。
任何提示?
新增no_namespace和raw_interfaces_only我的#进口:
#import "server.tlb" no_namespace named_guids
而且使用TLBEXP.EXE代替REGASM.EXE似乎帮助这个问题。
此外,请确保您的C#类没有这个属性:
[ClassInterface(ClassInterfaceType.AutoDual)] < - 似乎导致用C++的错误与_TypePtr
任何想法为什么会发生这种情况? – 2010-11-08 11:45:33
更ofenly, 时vs compcomp com的来源到一个tlb 它会有这样的提示: // #import“C:\ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ mscorlib.tlb” 你应该把这个添加到StdAfx .h之前#inport youOwn.tlb 像 这样的basice属性_Type,_ObjRef会添加编辑在你项目为原型
我认为,它会解决你的问题。
,但更大的问题是:一切都很 完成后,会有一些运行时错误,当你调用一个PTR在你的程序
任何人都可以帮忙吗?
#import "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorlib.tlb" was the solution for me.
TLBEXP没有帮助我,raw_interfaces_only没有。为什么代码示例包含named_guids而不是raw_interfaces_only? – 2010-11-08 11:47:52