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

1866

被折叠的 条评论
为什么被折叠?



