Visual Studio 2015で新しいATLプロジェクトを作成しました。新しい単純なATLオブジェクトを追加しました。ライブラリ内にstruct
を定義しようとしていますので、COM実装でstruct
を渡すことがあります。ここに私のCerberusNative.idl
定義が追加CerberusErrorDetails
構造で、次のとおりです。私はそれをコンパイルしようとするとこの構造体をCOMライブラリでどのように定義できますか?
import "oaidl.idl";
import "ocidl.idl";
[
object,
uuid(B98A7D3F-651A-49BE-9744-2B1D8C896E9E),
dual,
nonextensible,
pointer_default(unique)
]
interface ICerberusSession : IDispatch{
};
[
uuid(8F2227F9-10A9-4114-A683-3CBEB02BD6DA),
version(1.0),
]
library CerberusNativeLib
{
[
uuid(527568A1-36A8-467A-82F5-228F7C3AC926)
]
typedef struct CerberusErrorDetails
{
INT ErrorCode;
BSTR ErrorMessage;
};
importlib("stdole2.tlb");
[
uuid(CAB8A88E-CE0E-4B4C-B656-C52A7C8A5B18)
]
coclass CerberusSession
{
[default] interface ICerberusSession;
};
};
、私は次のエラーを取得する:
Error MIDL2312 illegal syntax unless using mktyplib compatibility mode : CerberusErrorDetails CerberusNative CerberusNative.idl 32
私が何か間違ったことをやっていますか?これはなんですか?mktyplib
エラー?なぜそれを求めているのですか?
あなたは '構造体CerberusErrorDetails'のtypedefを宣言したが、それに名前を与えられていません。 – Ben