idl编译生成头文件和失败问题记录

本文介绍了如何使用Visual Studio创建空项目并添加idl文件,以编译生成COM所需的头文件。在idl中定义类名、ID、方法等关键要素,并解决了遇到的LNK2001外部符号错误,通过禁用增量链接来修复。

使用Com时候,需要用idl,和idl编译出.h文件,操作方法

1、创建一个空win32或者控制台项目:

添加新项目-->Visual C++ -->Win32-->Win32控制台应用程序/Win32项目-->选择目录和设置项目名




“应用程序设置”中,附加选项选择“空项目”


点击“完成”


2、添加idl:

选择项目-->右键选择“添加新项”-->Visual C++ -->Midl文件(.idl)--->设置文件名-->"添加"


3、由于个人习惯,喜欢把生成文件的xxx_c.h的“_c”去掉:

“属性”--》MIDL-->输出-->头文件-->将其中的%(Filename)_C.h改为%(Filename).h


4、idl中添加代码

[
	object,
	uuid(34C5A3F4-3CC4-46F4-9384-5329C156F5BA),
	dual,
	nonextensible,
	pointer_default(unique)
]
interface TestController: IUnknown
{
	
	[id(1), helpstring("TestController func")] HRESULT TestFunc([in] BSTR bstrParam );


};
a)其中的“uuid”为唯一,可以用“工具”-->“创建GUID”重新生成,这个ID需要是唯一

b)TestController设成自己的类名,需要继承IUnknow

c)TestController中的“id”必须不重复,有些Com调用是通过函数id调用的

d)"helpstring"为方法说明

e)TestFunc为函数名称,

f)HRESULT 返回值为,返回的错误码可以MSDN查询

g)bstrParam为参数,参数类型不一定是BSTR,具体类型不再累述,可以自行查阅相关资料;

5、错误排查:

如出现:>LINK : error LNK2001: 无法解析的外部符号 _WinMainCRTStartup类的错误,需要设置不启用增量连接:

项目属性-->链接器-->启用增量连接,选择“否 (/INCREMENTAL:NO)”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值