sách gpt4 ai đã đi

winapi - 如何调用 MIDL 编译器从 .IDL 文件生成 .TLB 文件(类型库)?

In lại 作者:行者123 更新时间:2023-12-04 23:19:52 25 4
mua khóa gpt4 Nike

我正在为看似 super 简单的事情苦苦挣扎:我想使用 MIDL 编译器从 .tlb 生成类型库(.idl 文件)文件。但是,我就是无法让 MIDL 生成 .tlb文件。

Đây là của tôiFoo.idl :

import "unknwn.idl";

[object, uuid(400075B9-4BD6-45A5-B8B7-9DA0CF7B9B13)]
interface IFoo : IUnknown
{
HRESULT DoFoo([in] int arg, [out, retval] int *result);
}

这就是我调用 MIDL 编译器的方式:

midl Foo.idl /tlb Foo.tlb

它将以下输出写入控制台:

Microsoft (R) 32b/64b MIDL Compiler Version 7.00.0555
Copyright (c) Microsoft Corporation. All rights reserved.
Processing .\Foo.idl
Foo.idl
Processing C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\unknwn.idl
unknwn.idl
Processing C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\wtypes.idl
wtypes.idl
Processing C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\basetsd.h
basetsd.h
Processing C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\guiddef.h
guiddef.h

MIDL 编译器生成三个文件: Foo.h , Foo_i.c , Foo_p.c ……但没有 Foo.tlb .我是不是误解了什么,或者这里出了什么问题?

1 Câu trả lời

.idl 文件需要 library{} block 之前它将生成一个类型库。在此 block 中,您需要声明库中需要存在的类型。普通库只有 coclass在 library 部分的定义中,midl 会自动注入(inject) coclass 使用的任何接口(interface)。

仅获取接口(interface)需要将其移动到库 block 中:

[
uuid(34DC0E7C-37C1-41C1-B3FD-1755A0396308),
version(1.0),
]
library MyLibrary
{
importlib("stdole2.tlb");

[object, uuid(400075B9-4BD6-45A5-B8B7-9DA0CF7B9B13)]
interface IFoo : IUnknown {
HRESULT DoFoo([in] long arg, [out, retval] long *result);
};
};

使用您自己的 uuid、版本号和库名称。 importlib voodoo 确保 IUnknown 和 GUID 的定义也不会嵌入到类型库中。

关于winapi - 如何调用 MIDL 编译器从 .IDL 文件生成 .TLB 文件(类型库)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30269119/

25 4 0
Bài viết được đề xuất: Sails.js 填充 where
Bài viết được đề xuất: sparql - 在 SPARQL 中使用数字值作为字符串值
Bài viết được đề xuất: ruby-on-rails - AWS Elastic Beanstalk 和 Every Gem
Bài viết được đề xuất: haskell - 对于简单的代码,类型约束变得巨大且不可读
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com