まず、私は COM 開発者ではありません。標準の C++、C#、および Java を知っています。
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);
}
}