У меня есть структуры в виде службе WCF, определенные в C#, какWCF Com Interop GetRecordInfoFromGuids Возвращает старый формат или недопустимого тип библиотеку
[DataContract]
[StructLayout(LayoutKind.Sequential), Serializable]
[ComVisible(true)]
public struct MyData
{
[DataMember]
public int data1;
[DataMember]
public string data2;
}
Из-приложения MFC Я пытаюсь создать небезопасный эту структуру. При вызове GetRecordInfoFromGuids как этот
hr = GetRecordInfoFromGuids(LIBID_MyLib, 1, 0, LOCALE_USER_DEFAULT, __uuidof(MyData), &pRI);
Я получаю возвращаемое значение
0x80028019 Old format or invalid type library.
Что не так с этим?
Ну, он не очень доволен библиотекой типов, которую он нашел. Вы должны сообщить нам, как зарегистрирована библиотека C# и где вы получили LIBID_MyLib. Также используйте SysInternals Process Monitor, вы увидите, что он ищет библиотеку типов. –
В Process Monitor я вижу, что он в точке вызова GetRecordInfoFromGuids имеет правильные директивные, основные и второстепенные версии и загружает правильную библиотеку типов. Я получаю LIBID из файла tlh, созданного из #import. Библиотека зарегистрирована как часть сборки с regasm – Jon49
Я решил это. Смотри ниже. – Jon49