.NET out-of-proc サーバーの #import に関する問題
質問
C++プログラムで、.NET out-of-procサーバーのTLBを#importしようとしています。
次のようなエラーが発生します。
z:\server.tlh(111) :エラー C2146:構文エラー :ない ';'識別子の前に「getType」
z:\server.tlh(111) :エラー C2501:'_TypePtr' :ストレージクラスまたは型指定子がありません
z:\server.tli(74) :エラー C2143:構文エラー :ない ';' 「タグ:: ID」の前
z:\server.tli(74) :エラー C2433:'_TypePtr' :データ宣言では「inline」は許可されません
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() が問題を引き起こしているようです。
一部の Google 調査によると、可能であることが示されています #import mscorlib.tlb
(またはパスに入れます)が、それをコンパイルすることもできません。
任意のヒント?
解決 3
no_namespace と raw_interfaces_only を #import に追加しました。
#import "server.tlb" no_namespace named_guids
また、REGASM.EXE の代わりに TLBEXP.EXE を使用すると、この問題が解決されるようです。
他のヒント
#import "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorlib.tlb" was the solution for me.
さらに、VSがTLBにCOMソースを遵守した場合、次のようなヒントがあります。// #import "c: windows microsoft.net framework v2.0.50727 mscorlib.tlb" you shoud you stdafx.hに#inport youown.tlbを追加します。プロトタイプのプロジェクト
そうすれば問題は解決すると思います。
しかし、より大きな問題は次のとおりです。すべての作業が完了した後、プログラム内で Ptr を呼び出すと、いくつかのランタイム エラーが発生します。
誰か助けてもらえますか?
また、C# クラスにこの属性がないことを確認してください。
[ClassInterface(ClassInterfaceType.AutoDual)] <-- _TypePtr を使用すると C++ でエラーが発生するようです