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

来源:互联网 发布:大数据龙头股票 编辑:程序博客网 时间:2024/06/05 06:06

使用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)”

原创粉丝点击