我正在尝试为sbtsv.idl
(它包含在 Windows 8 SDK 中)创建一个 C# inproc 服务器。我发现的几乎每条指令都告诉您使用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 编译器版本 8.00.0603 版权所有 (c) 微软公司。版权所有。 处理 .\sbtsvClientLib.idl sbtsvClientLib.idl 处理 C:\Program Files (x86)\Windows Kits\8.1\include\um\oaidl.idl oaidl.idl 处理 C:\Program Files (x86)\Windows Kits\8.1\include\um\objidl.idl objidl.idl 处理 C:\Program Files (x86)\Windows Kits\8.1\include\um\unknwn.idl 未知.idl 处理 C:\Program Files (x86)\Windows Kits\8.1\include\shared\wtypes.idl wtypes.idl 处理 C:\Program Files (x86)\Windows Kits\8.1\include\shared\wtypesbase.idl wtypesbase.idl 处理 C:\Program Files (x86)\Windows Kits\8.1\include\shared\basetsd.h basetsd.h 处理 C:\Program Files (x86)\Windows Kits\8.1\include\shared\guiddef.h 引导定义.h 处理 C:\Program Files (x86)\Windows Kits\8.1\include\um\SessdirPublicTypes.idl SessdirPublicTypes.idl 处理 C:\Program Files (x86)\Windows Kits\8.1\include\um\oaidl.acf oaidl.acf midl\oleaut32.dll:错误 MIDL2020:错误生成类型库:SetFuncAndParamNames 失败:put_State (0x8002802C)
我想我将被迫手动编写类和接口,但我想检查一下我是否做错了什么可以让它工作。