我想将类型库(tlb)导入C#.
如何.tlb将.cs代码导入代码文件?
Borland Delphi可以使用命令行工具导入.tlb到:.pastlibimp.exe
C:\Develop>tlibimp.exe SopQuotingEngineActiveX.tlb
Borland TLIBIMP Version 5.1 Copyright (c) 1997, 2000 Inprise Corporation
Type library loaded...
Created C:\Develop\SopQuotingEngineActiveX_TLB.dcr
Created C:\Develop\SopQuotingEngineActiveX_TLB.pas
Run Code Online (Sandbox Code Playgroud)
现在有一个.pas源代码文件,包含常量,枚举,接口,它们位于已编译的Type Library(tlb)文件中:
SopQuotingEngineActiveX_TLB.pas:
unit SopQuotingEngineActiveX_TLB;
interface
...
const
CLASS_XSopQuotingEngine: TGUID = '{3A46FFB8-8092-4920-AEE4-0A1AAACF81A0}';
...
// *********************************************************************//
// Interface: IXSopQuotingEngine
// Flags: (4416) Dual OleAutomation Dispatchable
// GUID: {AA3B73CC-8ED6-4261-AB68-E6AE154D7D52}
// *********************************************************************//
IXSopQuotingEngine = interface(IDispatch)
['{AA3B73CC-8ED6-4261-AB68-E6AE154D7D52}']
procedure OnStartPage(const AScriptingContext: IUnknown); safecall;
procedure OnEndPage; safecall;
procedure Connect(const ConnectionString: WideString); safecall; …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个C#inproc服务器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;
};
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试运行它时,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 …
快速提问:如何从.NET访问为Win32 API定义的BN_CLICKED常量和其他常量?它们是否在某些图书馆中定义?我必须自己定义吗?如果是这样,我在哪里可以找到这些值?Windows版本之间的值是否为特定于版本的值?