2009-05-22 4 views
1

私はLuaバインディングを作成する手段としてSWIGに潜入しています。私は自分のインターフェースファイルを作って、問題なく共有オブジェクトファイルを作りました。そう、swuaラッパーをコンパイルした後にluaopen_my_exampleが未定義

 
[C]: ? 

[C]: in function 'require' 

stdin:1: in main chunk 

[C]: ? 

が、私はこのような状況を記述し、オンラインで何かを見つけるように見えることはできません。

 
Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio 
require("my_example") 
error loading module 'my_example' from file './my_example.so': 

     ./my_example.so: undefined symbol: luaopen_my_example 

スタックトレース:しかし、私はLuaのを実行し、共有オブジェクトを要求しようとすると、私は次の取得します私はここに投稿すると思った。 SWIGのGurusはありますか?私がラッピングしているクラスは、数千行(および独自仕様)か、ここに掲載します。

ありがとうございます! :D

答えて

1

どのSWIGのバージョンを使用していますか、どのプラットフォームで使用していますか?私はCygwinの下に走ったSWIGの

少し古いバージョン1.3.29はmodがの上部に%module文で使用される名前だったluaopen_modとしてrequireによってたかった名前を指定するために、深いその生成されたラッパーファイルに埋もれ#define SWIG_initを使用していますSWIG .iファイル。私がラップしたモジュールは、Windows上のLua 5.1をロードして動作させます。

また、シンボルがエクスポートされ、Luaで決して見つからないC++名に名前が変更されていないことを確認するために何かする必要があるかもしれません。私はCの構造体とWindows APIの一部をラップしていたので、そのラッパーのC++固有の問題は扱いませんでした。しかし、SWIGが関与していなくてもモジュールの読み込みの問題が頻繁に発生します。

1

/手のひらを顔に当てる

私はインターフェイス(.I)ファイルにmisnamedモジュールを持っていました。とにかくありがとう!

関連する問題