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)”
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)”
相关文章推荐
- 关于corba接口自动生成把idl文件编译成Java的批处理文件(win bat)的java方法(原创)
- 记录Cocos Creator 编译失败问题
- VS2010编译QT4.8.4遇到“LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏 “问题
- 编译cocos2dx工程,生成libcocos2dcpp.so文件失败
- Android6.0编译时out目录下文件无法自动生成问题解决方案
- C#生成配置选择release编译后仍然是debug(或者配置debug编译后仍是release)的问题解决--日志记录
- 使用javac编译java文件和使用javah生成C/C++头文件 遇到找不到类的问题
- MFC编译生成文件的一些问题
- 关于我自己在用mvn2时在src/main/resources添加了配置文件后eclipse没有自动在/src/main/webapp/WEB-INF/classes生成一样的文件问题记录
- c++ duilib加载静态库编译失败 可执行文件退出弹兼容性窗口 问题
- Ubuntu安装CodeBlocks相关问题(不能编译或者编译通过但不能生成可执行文件)
- tomcat问题,jsp页面无法编译,web页面一片空白,log显示空指针,在tomacat的work文件夹下没有生成相应的Java文件
- 解决Myeclipse编译不生成.class文件问题
- 0420 测试记录 gcc 编译时 库文件 头文件问题及其解决方案
- 工作学习笔记——VS2010无法复制exe文件导致的工程生成失败问题
- 生成apk文件遇到的编译问题error: format not a string literal and no format arguments
- eclipse clean后不能自动编译生成class文件的问题
- Android Project from Existing Code 生成 R 文件错误、失败等问题解决办法 - 持续更新
- ubuntu挂载的NTFS文件编译失败问题
- LinqToSQL的dbml生成问题,编译生成时.designer.cs文件被删。