0

我正在使用 JNAerator 解析 Windows API 头文件,以便可以从 JVM 引用它们。但是,我对 C/C++ 的使用不如其他语言舒服,但我需要先了解这些头文件,然后才能正确解析它们。

我特别关注 Unkwn.h,它基本上包含

#include "rpc.h"
#include "rpcndr.h"

#ifndef COM_NO_WINDOWS_H
  #include "windows.h"
  #include "ole2.h"
#endif /*COM_NO_WINDOWS_H*/


//Some forward declarations
typedef interface IUnknown IUnknown;
typedef interface AsyncIUnknown AsyncIUnknown;
typedef interface IClassFactory IClassFactory;

#include "wtypes.h"

//followed by the full declarations for the interfaces IUnkown, AsyncIUnkown and IClassFactory and their methods, but no actual implementations of course. 

我认为如果 wtypes.h 引用了类型(IUnkown、AsynIUnkown 或 IClassFactory),则需要这些前向定义,但我在 wtypes.h 或 wtypes.h 引用的其他标头中找不到对这些类型的任何引用。那么为什么需要前向声明(或者我错过了什么)?

4

1 回答 1

0

这些不是前向声明。这些是类型定义,它们定义接口数据类型。这当然是微软的扩展。定义所做的是确保IUnknown(例如)引用该名称的接口。

于 2012-11-17T03:34:01.783 回答