2013-11-08 3 views
3

им попробовать другие языки. Got VB2013 и LuaForWindows 5.1 Какова самая основная файловая структура для запуска файла .lua в моей программе? я в настоящее время делается http://www.youtube.com/watch?v=w51pftzS1_8 включает в себя часть, сделал .h файл, который выглядит как этотC++ И lua-как начать?

#ifndef __LUA_INC_H__ 
#define __LUA_INC_H__ 


#include "lua.h" 
#include "lauxlib.h" 
#include "lualib.h" 


#endif // __LUA_INC_H__ 

и Run.cpp как этот

#include <iostream> 
#include <conio.h> 
#include <iostream> 
#include "LuaInc.h" 

using namespace std; 

int main() 
{ 
int iErr = 0; 
lua_State *lua = lua_open(); // Open Lua 
luaopen_io(lua);    // Load io library 
if ((iErr = luaL_loadfile(lua, "test.lua")) == 0) 
{ 
    // Call main... 
    if ((iErr = lua_pcall(lua, 0, LUA_MULTRET, 0)) == 0) 
    { 
     // Push the function name onto the stack 
     lua_pushstring(lua, "helloWorld"); 
     // Function is located in the Global Table 
     lua_gettable(lua, LUA_GLOBALSINDEX); 
     lua_pcall(lua, 0, 0, 0); 
    } 
} 
lua_close(lua); 
_getch(); 
return 0; 
} 

файл test.lua находится в директории vb213 проектов/MyProject/MyProject

и выглядит следующим образом

function helloWorld() 
io.write ("hello World") 
end 
+1

Вы запрашиваете более минимальный пример, чем то, что у вас есть выше? – greatwolf

ответ

2

F rom VS2013 и Lua для Windows, у вас будет определенная боль, связанная с получением правильной версии библиотеки Runtime Library. Lua для Windows был скомпилирован против более старой версии CRT, поставляемой с VS2005. Может быть или не удастся заставить VS2013 связываться с этой более старой версией. Смешивание версий CRT - это рецепт для большой путаницы.

Самый простой способ - получить версию ядра Lua, созданную для вашей версии Visual Studio. Есть два способа сделать это.

  1. Загрузить версию от Lua Binaries. Есть готовые версии Lua, доступные из «официального» дистрибутива Lua Binaries. Его можно использовать для 32-битных и 64-битных построений, для Windows и для других платформ.

  2. Постройте Lua самостоятельно как часть своего решения. Построение собственного Lua51.dll прост, конфигурация по умолчанию разумна. В основном это включает в себя почти все файлы .c в DLL-проекте. Обратите внимание, что lua.c не является частью DLL, то есть источником является lua.exe. Аналогичным образом, luac.c не является частью DLL, это источник luac.exe, который требует некоторой осторожности, чтобы построить себя; но вам это вряд ли понадобится.

В любом случае, вы должны обратить внимание на некоторые детали.

Lua API - это API C, не C++. Так что, если вы настаиваете на том, ваше приложение будет приложение C++, вы должны обернуть включения заголовочных файлов Lua внутри из exern "C" блока:

extern "C" { 
#include "lua.h" 
#include "lauxlib.h" 
#include "lualib.h" 
} 

В принципе, вы можете построить ядро ​​Lua в C++ вместо этого. Ядро написано в чистом C-вкусе, который также является подмножеством C++, и проверяется при компиляции как C++. Однако, если вы идете по этому маршруту, вы должны должен создавать любые двоичные модули самостоятельно против вашей C++-связи, и таким образом может быть безумие, если вы зависите от многих модулей, поставляемых сообществом.

Я считаю, что все сборки, доступные в бинарниках Lua, скомпилированы как C, а не C++, поэтому с ними следует объявление extern "C".

0

Ну, для начала, я бы порекомендовал поцарапать C++ и переключиться на lua в качестве основного языка программирования. Весьма беспорядочно называть функции lua с помощью C++, по крайней мере, это мой опыт. Как только вы поймете достаточно Lua, THEN вызовите функции c/C++ из Lua через dll или другие файловые/системные форматы.Я был разорван между обучением python или c/C++, и я выбрал python. Оттуда я узнал о Луа и любил его больше, чем питон. Опять же, это только мой опыт и предложение. Теперь, чтобы ответить на ваш вопрос, зачем запускать Lua на C++? Lua основан на API C, поэтому я бы просто использовал raw C или просто придерживался C++. Я говорю это только потому, что Lua технически не отличается от обводненной версии C. Однако Lua больше не «орошается», поскольку его можно использовать как полностью действующий автономный язык программирования.

Смежные вопросы