zoukankan      html  css  js  c++  java
  • 关于编译com工程的一些体会

    作者:朱金灿

    来源:http://blog.csdn.net/clever101

       

            今天发现com的编译的一个重要一步是微软提供的midl工具将其中的idl文件生成一个头文件、c文件(即IID文件)和代理文件。头文件作为接口文件很好理解,为啥生成一个c文件呢?理由应该是com的一个设计初衷是跨语言调用,而c库一般能跨语言调用的。代理文件的作用暂时还不清楚。

     

             在工程属性里有一栏设置叫MIDL,里面就是有相关MIDL工具如何生成头文件和c文件的一些设置的。如下:

            

              

               比如附加包含目录是指什么呢?就是说这个com工程要使用其它com工程定义的类型,那么它的idl文件就要导入其它工程的idl文件,具体的语法如下:

    import "oaidl.idl";
    import "ocidl.idl";
    import "AlgoCom.idl";
    import "CartoCom.idl";

            除开系统提供的oaidl.idlocidl.idl,那么AlgoCom.idlCartoCom.idl是怎么找到的呢?就是在附加包含目录找到的。这里有一个问题,貌似import关键字不支持二级目录,比如import "IncludeCartoCom.idl";并不支持。


           又比如下图:       


           上图是设置生成的头文件、c文件(即IID文件)和代理文件的名字。生成的文件默认放在工程目录下。其实还可以在这里指定生成目录的。

     

           很多时候需要包含生成的头文件。其实生成的c文件往往也是需要包含的,否则在链接是会出现无法解析的IID_map之类的错误,那是因为没有使用包含c文件的语句,如:

    #include "map.c"


  • 相关阅读:
    day09_request&response学习笔记
    为什么浏览器User-agent(浏览器类型)总是有Mozilla字样?
    无效类字符串:ProgID: Excel.Application
    django2.0升级日记
    Kali Linux信息收集工具
    Kali Linux 工具使用中文说明书
    人手一份核武器
    五大常用算法【转发】
    ACCA AI来袭会议笔记
    2017 Gartner数据科学魔力象限出炉,16位上榜公司花落谁家?
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6470211.html
Copyright © 2011-2022 走看看