2013-04-01 16 views
7

मैं लूआ 5.1 को अपने एप्लिकेशन की एम्बेडेड स्क्रिप्टिंग भाषा के रूप में चुनता हूं, लेकिन जब मैं एक विरासत मंच पर एप्लिकेशन को पोर्ट करता हूं तो PowerPC पर LynxOS चलाता है, चीज़ गलत हो रही है।लुआ पावरपीसी/लिंक्सोस मंच पर अजीब व्यवहार करता है, क्यों?

मैं पाने कोड निम्नलिखित पीसी पर चलाने के लिए और हर चीज अच्छा लग रहा है:

void test_lua() 
{ 
    const char *code = "foo = 5\n"; 
    double vfoo=0; 
    lua_State *L = luaL_newstate(); 

    (void)luaL_loadbuffer(L, code, strlen(code), "line"); 
    (void)lua_pcall (L, 0, 0, 0); 

    lua_getglobal(L, "foo"); 
    vfoo = lua_tonumber(L, -1); 

    lua_close(L); 

    myTrace("vfoo = %f", vfoo); 
    for(;;); 
} 
पीसी (विजुअल C++ 6.0) मैं उम्मीद कर गया साथ

"vfoo = ५.०,००,०००"

लेकिन LynxOS/PowerPC मैं के साथ "vfoo = 0.000000" मिला।

तो लिंक्सोस/पावरपीसी पर लुआ के लिए क्या चल रहा है? मैं सोच रहा हूं कि बड़ी-अंत मशीन के लिए कुछ कॉन्फ़िगरेशन हैं, मैंने इसे "luaconf.h" में देखा लेकिन कुछ भी नहीं मिला। मैंने विन्यास आइटम "LUA_USE_POSIX" भी कोशिश की लेकिन कोई मदद नहीं।

मुझे पता है कि यह लुआ प्रोग्रामिंग के लिए एक सामान्य मंच नहीं है। हालांकि, किसी भी सुझाव का स्वागत है और सराहना की जा रही है।

+6

कोड सही लगता है। मेरा सुझाव है कि आप 'luaL_loadbuffer' और 'lua_pcall' के वापसी मानों की जांच करें और' lua_getglobal' के बाद 'luaL_typename (एल, -1)' प्रिंट करें। – lhf

+0

पर लुआ परीक्षण सूट हैं। उन्हें चलाने का प्रयास करें। अगर कुछ तोड़ दिया जाता है, तो कुछ परीक्षण विफल हो जाते हैं, शायद आपको टूटी हुई चीज़ों के बारे में अधिक जानकारी देनी चाहिए। (टेस्ट कोड घना और असम्बद्ध है, लेकिन क्या हुआ लाइन जानकारी पुनर्निर्मित करने के लिए पर्याप्त होनी चाहिए।) – nobody

उत्तर

2

एंडियन-नेस को लुआ कोड के संचालन को प्रभावित नहीं करना चाहिए। मैंने कई प्लेटफॉर्म पर पोर्ट किया है जो Win32 नहीं हैं, और मैंने ऐसे समय में भाग लिया है जहां LUA_IEEE754TRICK का उपयोग 64-बिट डबल को पूर्णांक में बदलने के लिए किया जाता है, हमेशा काम नहीं करता है, लेकिन डिफ़ॉल्ट रूप से सक्षम होता है। Luaconf.h में LUA_IEEE754TRICK मैक्रो को अपरिभाषित करने का प्रयास करें।

मुझे क्लाइब्स का भी सामना करना पड़ा है जहां फ़्लोटिंग पॉइंट printf/scanf फ़ंक्शंस टूटा या अविश्वसनीय था, और मुझे lua_number2str का अपना कस्टम संस्करण लिखना पड़ा।

हालांकि मैं आपके लिए महसूस करता हूं। लुआ इंजन एक बड़ा, काला बॉक्स है जो अपने आंतरिक के साथ कुछ गलत होने पर कदम उठाने और डीबग करने में उलझन में है। मेरे मामले में यह आमतौर पर कंपाइलर/क्लिब की गलती होती है, लेकिन इससे 2 एक दूसरे के साथ मिलना आसान नहीं होता है।

+0

प्रतिक्रिया के लिए धन्यवाद। असल में हमारे पीपीसी/लिंक्सोस प्लेटफॉर्म पर डीबग करना मुश्किल नहीं है क्योंकि कोई कुशल उपकरण उपलब्ध नहीं है, इसलिए मैंने यह संदेश यहां पोस्ट किया है। बाद की कहानी यह है कि मंच समाप्त हो गया है और इसके बारे में कोई भी प्रयास अब और प्रोत्साहित नहीं करता है। –

संबंधित मुद्दे