0
==============
Info Develope:
MacOS 10.6 SnowLeopard
iOS SDK 5.0
FreePascal 2.6.0 for MacOS X
FreePascal 2.6.0 for iOS
XCode 4.2
Device: iPad
Lua: Object library = liblua.a (ver 5.14) 
==============

コード:

A) lua_pushnumber(LuaInstance, 5);
B) lua_pushstring(LuaInstance, 'TEST');
C) lua_pushlstring(LuaInstance, 'TEST', 4);

問題: バリアント "B" と "C" を使用し、iPad でプロジェクトを起動すると、アプリケーションが起動時に点滅し、次のエラーで閉じます:

(iPad) コンソール ログのエラー:

Exited with code: 217
<Warning> Application 'demo1' exited abnormally with exit status 217

バリアント「A」の場合、すべて問題なく、アプリケーションが正常に起動します。

興味深いことに、シミュレーターでコンパイルして起動すると、すべてのバリアント (「A」、「B」、「C」) がクラッシュすることなく動作します。

lua_pushstring のデバイスでアプリケーションがクラッシュする理由を知っている人はいますか?

freepascal を使用せずにこの問題に対処した人、または c++ を使用している可能性があります。お願い助けて。

4

1 に答える 1

0

func lua_pushlstring に printf を追加すると、問題が修正されたことに気付きました。なんで?

LUA_API void lua_pushlstring (lua_State *L, const char *s, size_t len) {
  lua_lock(L);
  luaC_checkGC(L);
  printf ("Test= %s ", s);  
  setsvalue2s(L, L->top, luaS_newlstr(L, s, len));
  api_incr_top(L);
  lua_unlock(L);
}

liblua.a をリンクすると、アドレッシング違反が発生するのではないでしょうか?

于 2012-07-27T13:06:06.307 に答える