Я определил структуру в .idl файле проекта C ++, и структура содержала один член VARIANT.
[uuid(C42A456C-C139-4339-A023-F9458C8A7386)]
struct TEST_STRUCT
{
int Type;
VARIANT DateTime;
float Result;
};
Интерфейс:
[id(1), helpstring("Test1")] HRESULT Test1([in] int nID, [out, retval] SAFEARRAY(struct TEST_STRUCT)* ppVal);
Тогда яимпортировал эту структуру в проект C # через «Добавить ссылку», но порядок членов был изменен.Это выглядит следующим образом:
namespace ASLib
{
[Guid("C42A456C-C139-4339-A023-F9458C8A7386")]
public struct TEST_STRUCT
{
public object DateTime;
public int Type;
public float Result;
}
}
Порядок элемента DateTime был изменен на первый в C #, это вызвало Interop.COMException «Неверный тип переменной», когда C # вызывает этот интерфейс.
Так есть ли способ исправить порядок членов структуры в файле COM idl?Большое спасибо.