您的位置:首页 > 其它

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

2017-07-06 12:01 756 查看
使用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)”
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐