यह एक अच्छा सवाल के रूप में यह है, मेरे लिए, बाहर विदेशी परीक्षण करने के लिए एक अवसर ...
आप कोई आपत्ति नहीं है, मैं कैसे विदेशी उपयोग करने के लिए समझाने के लिए अवसर ले, तो मेरे जैसे लोग (require
पर बहुत उपयोग नहीं किया जाता है) इस धागे पर ठोकरें शुरू हो जाएंगी ...
आप लुआफोर्ज पेज से लिंक देते हैं, मैं वहां गया, और देखा कि मुझे इसे पाने के लिए लुआरॉक की आवश्यकता है। :-( मुझे बाद में किसी दिन इंस्टॉल करना चाहिए, लेकिन मैंने अभी इसे छोड़ना चुना है। इसलिए मैं रिपोजिटरी में गया और alien-0.4.1-1.win32-x86.rock डाउनलोड किया। मुझे पता चला कि यह एक सादा ज़िप फ़ाइल थी, जिसे मैं सामान्य रूप से अनजिप कर सकता था।
require
साथ एक सा fumbling के बाद, मैं एक त्वरित परीक्षण के लिए लुआ स्क्रिप्ट में रास्तों हैकिंग समाप्त हो गया। मैं बजाय LUA_PATH
और मेरे वातावरण में LUA_CPATH
बनाना चाहिए, मुझे लगता है कि बाद में करेंगे।
तो मैं विदेशी ले लिया। lua, core.dll और struct.dll unzipped फ़ोल्डरों से और उन्हें एक सामान्य लाइब्रेरी भंडार में एलियन नाम की निर्देशिका के तहत डाल दिया।
और मैंने एफ जोड़ा मेरी स्क्रिप्ट के शुरू करने के लाइनों ollowing (बुरा हैक चेतावनी!): MessageBox:
package.path = 'C:/PrgCmdLine/Tecgraf/lib/?.lua;' .. package.path
package.cpath = 'C:/PrgCmdLine/Tecgraf/lib/?.dll;' .. package.path
require[[Alien/alien]]
तो मैं एक साधारण फ़्रिल रहित तत्काल दृश्य परिणाम के साथ समारोह के साथ यह कोशिश की।
local mb = alien.User32.MessageBoxA
mb:types{ 'long', 'long', 'string', 'string', 'long' }
print(mb(0, "Hello World!", "Cliché", 64))
हाँ, मुझे संदेश बॉक्स मिला है! लेकिन ठीक क्लिक करने पर, मुझे शायद आपके जैसे लुआ का दुर्घटना हो गया। विदेशी डॉक्स के एक त्वरित स्कैन करने के बाद, मुझे पता चला (बेनाम) अपराधी:
mb:types{ ret = 'long', abi = 'stdcall', 'long', 'string', 'string', 'long' }
तो यह काम करने के लिए अपने कॉल करने के लिए तुच्छ था: हम Windows API के लिए stdcall बुला सम्मेलन उपयोग करने की आवश्यकता:
local eev = alien.Kernel32.ExpandEnvironmentStringsA
eev:types{ ret = "long", abi = 'stdcall', "string", "pointer", "long" }
local buffer = alien.buffer(512)
eev("%USERPROFILE%", buffer, 512)
print(tostring(buffer))
नोट मैं EEV कॉल में बफर पैरामीटर डाल ...
वाह! आप विंडोज के लिए लुआ का भी उपयोग कर सकते हैं (http://luaforwindows.luaforge.net/)। यह बॉक्स के बाहर काम कर रहे विदेशी के साथ आता है। – Jazz
हां, लेकिन हालांकि यह एक अच्छा पैकेज है, मुझे इसकी "सभी बैटरी शामिल" दर्शन पसंद नहीं है, जिसके परिणामस्वरूप पायथन की तुलना में एक बड़ा डाउनलोड होता है ... – PhiLho