game-music-emu-flashを FlasCC で動作させようとしています。C/C++ Game_Music_Emu ライブラリを使用し、元々は Alchemy でコンパイルされていますが、FlasCC でパフォーマンスが向上するかどうかを確認したいと考えています。現在のプロジェクト ActionScript は FlasCC と互換性がないため、SWIG をタイプマップと共に使用してライブラリを呼び出したいと考えています。サンプルのコードに従っています。タイプマップはまだコーディングしていませんが、とりあえず swig.i を次のように作成しました。
#ifdef SWIG
%module libgmeLibModule
%{
#include "gme/gme.h"
%}
%include "gme/gme.h"
#else
#include "gme/gme.h"
#endif
Makefile はサンプルに厳密に従い、一致させる必要があるものを置き換えます。コンパイル中に、すべてのフォームで同様のエラーが発生します
libgmeLib_wrapper.cpp: In function `void _wrap_gme_ay_type_get()':
libgmeLib_wrapper.cpp:2575: error: invalid conversion from `const void*' to `void*'
libgmeLib_wrapper.cpp:2575: error: initializing argument 1 of `void* memcpy(void*, const void*, size_t)'
でコンパイル
"$(FLASCC)/usr/bin/g++" $(BASE_CFLAGS) -04 gmemain.cpp gme/*.cpp -emit-swc=sample.libgme -o libgme.swc
Makefile 自体で、all:
エラーなしでコンパイルされます。
私はC ++をよく知らないので、助けていただければ幸いです。また、SWIG と typemaps を使用するのがよいでしょうか、それとも手動でラッピングするのが理にかなっていますか? gme はまともなサイズのライブラリなので、SWIG の方が良いと思いました。