Я пытаюсь создать inproc-сервер C # для sbtsv.idl
(он включен в Windows 8 SDK). Почти все инструкции, которые я нахожу, говорят вам использовать MIDL
для создания .tlb
файл, затем tlbimport
, чтобы создать прокси dll.
Однако, если IDL не включает library
раздел .tlb
файл не будет создан, а sbtsv.idl
не включает library
раздел.
Я попытался создать свой собственный файл IDL, в котором объявлен интерфейс, который я хотел создать внутри библиотеки.
#include "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include\sbtsv.idl"
[uuid(43250D0C-BBC6-4109-BCD2-6F61F0D3B611)]
library sbtsvClientLib
{
interface ITsSbResourceNotification;
};
Однако, когда я пытаюсь запустить его через MIDL
, я получаю следующую ошибку
Microsoft (R) 32b/64b MIDL Compiler Version 8.00.0603 Copyright (c) Microsoft Corporation. All rights reserved. Processing .\sbtsvClientLib.idl sbtsvClientLib.idl Processing C:\Program Files (x86)\Windows Kits\8.1\include\um\oaidl.idl oaidl.idl Processing C:\Program Files (x86)\Windows Kits\8.1\include\um\objidl.idl objidl.idl Processing C:\Program Files (x86)\Windows Kits\8.1\include\um\unknwn.idl unknwn.idl Processing C:\Program Files (x86)\Windows Kits\8.1\include\shared\wtypes.idl wtypes.idl Processing C:\Program Files (x86)\Windows Kits\8.1\include\shared\wtypesbase.idl wtypesbase.idl Processing C:\Program Files (x86)\Windows Kits\8.1\include\shared\basetsd.h basetsd.h Processing C:\Program Files (x86)\Windows Kits\8.1\include\shared\guiddef.h guiddef.h Processing C:\Program Files (x86)\Windows Kits\8.1\include\um\SessdirPublicTypes.idl SessdirPublicTypes.idl Processing C:\Program Files (x86)\Windows Kits\8.1\include\um\oaidl.acf oaidl.acf midl\oleaut32.dll : error MIDL2020 : error generating type library : SetFuncAndParamNames failed : put_State (0x8002802C)
Я думаю, мне придется писать классы и интерфейсы вручную, но я хотел проверить, делаю ли я что-нибудь не так, что позволило бы этому сработать.