我正在使用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的其他头文件。引用。那么为什么需要前瞻声明(或者我错过了什么)?
答案 0 :(得分:0)
这些不是前瞻性声明。这些是类型定义,它们定义接口数据类型。这当然是Microsoft的扩展。定义的作用是确保IUnknown
(例如)引用该名称的接口。