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のインターフェースをどのように作成する必要がありますか?

4

1 に答える 1

4

これで始めることができますが、何が必要かを正確に知ることは困難です。

%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
于 2012-10-05T15:51:02.457 に答える