2008-10-11 15 views
33

क्या लुआ स्क्रिप्ट से स्टैंडअलोन .exe फ़ाइलों को बनाने का कोई आसान तरीका है? असल में इसमें लुआ दुभाषिया और लिपियों को जोड़ना शामिल होगा।स्टैंडअलोन लुआ निष्पादन योग्य बनाना

मुझे विश्वास है कि यह संभव है (पीएलटी योजना स्टैंडअलोन निष्पादन योग्यों को उसी तरह से बनाने की अनुमति देती है), लेकिन कैसे, बिल्कुल?

उत्तर

27

चेक बाहर srlua के लिए हो सकता है की आवश्यकता नहीं है। यह वही करता है जो आपको चाहिए।

यह लुआ लेखकों में से एक है। इस पते पर पूर्व-संकलित विंडोज़ बाइनरी भी है, इसलिए आपके लिए यह भी आसान होगा।

+0

अफसोस की बात है, srlua मेरे लिए काम नहीं किया। नीचे luac/bin2c के साथ समाधान – Zane

+1

srlua उनके github repo- https: // github में द्विआधारी वितरित करता है।कॉम/लुआडिस्ट/srlua ये मेरे लिए बहुत अच्छी तरह से काम करते हैं- 'glue.exe srlua.exe my.lua my.exe' – noahp

3

चूंकि आप कहते हैं '.exe' मुझे लगता है कि आप एक विंडोज समाधान की तलाश में हैं। एक विचार है कि स्क्रिप्ट को एक प्रीबिल्ट दुभाषिया निष्पादन योग्य में संलग्न करना है। यह आपकी पुस्तक में 'आसान' के रूप में योग्यता प्राप्त कर सकता है या नहीं।

दुभाषिया को खुद को पढ़ने में सक्षम होने की आवश्यकता है, यह निर्धारित करने के लिए अपने हेडर को पार्स करें कि नियमित .exe डेटा कहां समाप्त होता है (यानी जहां स्क्रिप्ट शुरू होती है) और फिर शेष फ़ाइल को लुआ को सौंप दें।

अन्य समाधान दुभाषिए के रूप में कड़ी मेहनत करने की लेकिन अधिक शामिल जोड़ने की आवश्यकता होती है, जबकि इस विधि के साथ, एक स्क्रिप्ट exeifying के रूप में सरल रूप में

copy interpreter.exe+script.lua script.exe 
+5

यही वह है जो srlua करता है। – lhf

7

उपरोक्त सुझावों के अलावा, आप L-Bia पर एक नज़र डाल सकते हैं।

यह लुआ स्क्रिप्ट और आवश्यक गतिशील पुस्तकालयों सहित स्टैंडअलोन निष्पादन योग्य बना सकता है।

+0

8^(और न तो एल-बियाया – Zane

8

स्क्रिप्ट उपयोग bin2c उपयोगिता इस तरह से निष्पादन करने के लिए:

luac script.lua -o script.luac 
bin2c script.luac > code.c 

तब पाठ संपादक फ़ाइल main.c में बना सकते हैं और संकलन/अपने पसंदीदा संकलक के साथ लिंक। बस।

cl /I "./" /I "$(LUA_DIR)\include" /D "_CRT_SECURE_NO_DEPRECATE" /D "_MBCS" /GF /FD /EHsc /MD /Gy /TC /c main.c 
ld /SUBSYSTEM:CONSOLE /RELEASE /ENTRY:"mainCRTStartup" /MACHINE:X86 /MANIFEST $(LUA_DIR)\lib\lua5.1.lib main.obj /out:script.exe 
mt -manifest $script.manifest -outputresource:script.exe;1 

उपयोग/सबसिस्टम: WINDOWS जीयूआई निष्पादन के लिए MSVC साथ

उदाहरण - (नोट निष्पादन भी कमांड लाइन आर्ग का समर्थन करता है)। यह सब सिर्फ पहली बार आसान नहीं है, आप सफलतापूर्वक प्रयास करने के बाद प्रक्रिया को स्वचालित करने के लिए बैच फ़ाइल बना सकते हैं।

main.c: इस विषय पर कुछ हद तक 'सतत' दिलचस्पी है और संभव जवाब अर्थ है कि नए समाधान सामने आ सकते हैं (पुराने लोगों अप्रचलित हो सकता है, जबकि) में 'द्रव' हैं

#include <stdlib.h> 
#include <stdio.h> 
#include "lua.h" 
#include "lauxlib.h" 
#include "lualib.h" 

int main(int argc, char *argv[]) { 
    int i; 
    lua_State *L = luaL_newstate(); 
    luaL_openlibs(L); 
    lua_newtable(L); 
    for (i = 0; i < argc; i++) { 
    lua_pushnumber(L, i); 
    lua_pushstring(L, argv[i]); 
    lua_rawset(L, -3); 
    } 
    lua_setglobal(L, "arg"); 
#include "code.c" 
    lua_close(L); 
    return 0; 
} 
+2

काम किया है ध्यान दें कि bin2c को लुआ 5.1 के साथ छोड़ दिया गया था, इसलिए आपको बाइटकोड को पैकेज करने और इसे लुआ स्टैक पर रखने का एक और तरीका चाहिए। लुआ में एक पुनर्मूल्यांकन के लिए http://lua-users.org/wiki/BinToCee देखें। –

0

के रूप में, यहाँ है अभी तक एक और संभावना (विंडोज़ के लिए) और शुद्ध लुआ स्रोत निर्भरताओं।

लिंक: Windows console utility to convert in a single step a Lua source with its Lua source dependencies into a C file ready for compilation.

नोट: सिवाय जहां दूसरों प्लेटफार्मों के लिए बाईटकोड, जिसके परिणामस्वरूप सी कोड किसी भी मंच कि शेयर लुआ स्रोत संकलन कर सकते हैं पर संकलित करने के लिए सक्षम होना चाहिए, और बनाने के स्टैंड-अलोन में मतभेद देखते हैं आपके लुआ अनुप्रयोगों की मूल बाइनरी।

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