私はCOM開発者ではないと言います。私は標準C++、C#、Javaを知っています。COM TypeLibから自動生成されたC++クラスは、メソッドでSAFEARRAYを返しません。
私はManaged C++から呼び出されるC#ライブラリを持っています。 Visual Studio 2010 - > TypeLibのMFCクラスを使用してC++クラスを追加しました。自動生成されたC++クラスはコンパイルされません。明らかにreturn文がありません。これをどうやって解決するのですか?私は本当に助けに感謝します。
ライブラリからC#クラス
[Serializable]
[
ClassInterface(ClassInterfaceType.AutoDual),
ProgId("Response")
]
public class Response
{
public static readonly int NUM_DATA = 6;
public Response()
{
data = new Data[NUM_DATA];
for (int i = 0; i < NUM_DATA; ++i)
{
data[i] = new Data();
}
}
private Data[] data;
public Data[] Data
{
[return: MarshalAs(UnmanagedType.SafeArray)]
get
{
return data;
}
}
}
マネージドC++、生成されたクラス
class CResponse : public COleDispatchDriver
{
public:
CResponse(){} // Calls COleDispatchDriver default constructor
CResponse(LPDISPATCH pDispatch) : COleDispatchDriver(pDispatch) {}
CResponse(const CResponse& dispatchSrc) : COleDispatchDriver(dispatchSrc) {}
// _Response methods
public:
SAFEARRAY * get_Data()
{
InvokeHelper(0x60020004, DISPATCH_PROPERTYGET, VT_EMPTY, NULL, NULL);
}
}