描述:
在com技术内幕(第十章)中的例子里包含了一个“iface.h”的头文件,但是它是通过编译sever.idl文件得到的,请问各位大侠如果我要是想引用sever.idl中的接口,必须通过sever.idl导出"iface.h”
吗,如不导出"iface.h”而直接用server.idl不行吗?请各位大侠指点.
解决方案1:
在com引用的时候,vc会自动为你生成对应的引用头文件,你所说的这个文件就是如此。
你只需要通过#import指定对应的dll就可以了。
楼上正确,如果你有.tbl文件也可以不需要头文件
解决方案3: 如果是说详细的使用,那么可以在DOS提示符下,到idl文件所在的目录,然后使用命令:
midl server.idl(后面还有一些参数)
即可以编译出你需要的头文件。
或者是使用命令:
nmake -f *.mak
编译makefile文件也可以得到这些头文件,这是因为makefile里面含有了midl server.idl这个命令。
还有很多参数,忘记了。这些参数决定了编译以后生成的文件名。你可以使用NotePad打开makefile文件看看就知道了。
IDL语言是语言无关性的。如果是直接在C/C++语言中包含这个文件可能不认识其中的定义。只有通过midl将idl文件转换为C的头文件才能使用。idl是一种语言,他使用在COM中主要是为了做到语言无关性。他能转换为C的头文件,也可以转换为其他语言可以认识的类型库文件。