厂家提供一个idl类型的文件给我们做二次开发,厂家说是接口文件,我在delphi中按动态连接库的方法调用不成功,不知如何使用?

解决方案 »

  1.   

    IDL是接口定义语言。
    MIDL是Microsoft的IDL编译器。
    在用IDL对接口和组件进行了描述后,可以用MIDL进行编译,生成相应的代理和存根DLL的C代码。
    一个例子:
    import “unknown.idl” ///用于将其他IDL文件中的定义包含到当前文件中
    ///Interface IX
    [ ///注意是[ ]不是 {}
    object, ///所定义的接口是一个COM接口
    uuid(32bb8323-b41b-11cf-a6bb-0080c7b2d682), ///相应的接口IID
    helpstring(“IX Interface”), ///将帮助串放入类型库
    pointer_default(unique) ///这类指针可以为空,函数内可以修改它们的值,但不能指定别名

    interface IX:IUnknown
    {
    ///in关键字告诉MIDL需要将此参数值从客户传递给组件,存根代码不需要送回任何值。
    HRESULT FxStringIn([in,string]wchar_t* szIn);
    ///out关键字告诉MIDL参数仅被用来从组件向客户传回有关的数据,
    ///代理不需要对输出参数进行列集,也不需要将参数传给组件。
    HRESULT FxStringOut([out,string]wchar_t* szout);
    ///COM对字符串的标准约定是Unicode字符(即wchar_t)
    }
    IDL文件可以定义C和C++风格的结构,并可用它们作为函数的参数。
    当IDL文件中有一个library时,MIDL将生成一个类型库。
    MIDL为接口生成相应的代理和存根的C代码。
    为得到一个代理/存根DLL,需要编译和链接MIDL生成的C文件。
    宏REGISTER_PROXY_DLL将完成代理/存根DLL在注册表中的注册操作。
    有了IDL和MIDL我们就可以象调用进程内组件那样进行跨进程边界的函数调用,并对参数进行列集。属性COM范围.
    http://graphics.cs.uni-sb.de/NMM/current/Docs/idl/x19.html
      

  2.   

    to cncharles(旺仔):说了这么多还是没有告诉我如何调用该文件,不过我还是谢谢你
      

  3.   

    2.接口定义语言(IDL) 
    IDL是CORBA的另外一个重要组成部分,用于说明CORBA服务对象完成的功能,但不能够利用IDL实现该功能。IDL是独立于其他编程语言的功能描述性语言,这从另外一个侧面说明了CORBA的语言环境独立性。利用IDL,完成CORBA服务对象方法的说明,然后利用语言映射工具,将用IDL定义的CORBA对象方法说明翻译成高级编程语言的接口说明,最后根据接口说明,利用C++或Java编写对象实现程序。