2012-10-04 83 views
1

我有以下的头文件: gaiageo.h 其定义为如何创建接口文件痛饮

#ifndef DOXYGEN_SHOULD_SKIP_THIS 
/* stdio.h included for FILE objects. */ 
#include <stdio.h> 
#ifdef DLL_EXPORT 
#define GAIAGEO_DECLARE __declspec(dllexport) 
#else 
#define GAIAGEO_DECLARE extern 
#endif 
#endif 

#ifndef _GAIAGEO_H 
#ifndef DOXYGEN_SHOULD_SKIP_THIS 
#define _GAIAGEO_H 
#endif 

#include "gg_const.h" 
#include "gg_structs.h" 
#include "gg_core.h" 
#include "gg_mbr.h" 
#include "gg_formats.h" 
#include "gg_dynamic.h" 
#include "gg_advanced.h" 

#endif /* _GAIAGEO_H */ 

所包含的头文件与GAIAGEO_DECLARE上布满,为 例如gg_formats.h(其很典型的包括头)有以下几点:

/** 
\file gg_formats.h 

Geometry handling functions: formats 
*/ 

#ifndef _GG_FORMATS_H 
#ifndef DOXYGEN_SHOULD_SKIP_THIS 
#define _GG_FORMATS_H 
#endif 

#ifdef __cplusplus 
extern "C" 
{ 
#endif 

/* function prototypes */ 

/** 
Test CPU endianness 

\return 0 if big-endian: any other value if little-endian 
*/ 
    GAIAGEO_DECLARE int gaiaEndianArch (void); 

/** 
Import an INT-16 value in endian-aware fashion 

\param p endian-dependent representation (input buffer). 
\param little_endian 0 if the input buffer is big-endian: any other value 
for little-endian. 
\param little_endian_arch the value returned by gaiaEndianArch() 

\return the internal SHORT value 

\sa gaiaEndianArch, gaiaExport16 

\note you are expected to pass an input buffer corresponding to an 
allocation size of (at least) 2 bytes. 
*/ 
    GAIAGEO_DECLARE short gaiaImport16 (const unsigned char *p, 
        int little_endian, 
        int little_endian_arch); 
#ifdef __cplusplus 
} 
#endif 

#endif /* _GG_FORMATS_H */ 

这是我在创建接口文件,并希望一些帮助的第一次尝试,在线文档是混淆了我吗?

我应该为每个头创建一个接口文件,我应该如何创建包含gaiageo.h的接口?

回答

3

这应该让你开始,但很难确切知道你需要什么。

%include <windows.i>使SWIG处理窗口主义像__declspec(dllexport)

默认情况下,SWIG不会递归包含文件,因此包括SWIG需要处理的文件。有一个开关来缓存,但它会处理stdio.h

%module gaiageo 

%{ 
#include "gaiageo.h" 
%} 

%include <windows.i> 
%include "gaiageo.h" 
%include "gg_const.h" 
%include "gg_structs.h" 
%include "gg_core.h" 
%include "gg_mbr.h" 
%include "gg_formats.h" 
%include "gg_dynamic.h" 
%include "gg_advanced.h" 

保存,作为一个gaiageo.i文件并运行是这样的:

swig -c++ -<target_language> gaiageo.i