CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - Lua i C++ - Błąd z otwieraniem skryptu

Lua i C++ - Błąd z otwieraniem skryptu

dział ogólny

Lua i C++ - Błąd z otwieraniem skryptu

Nowy postprzez TNTeener » niedziela, 27 maja 2012, 18:08

Kiedy otwieram w c++ plik skrypt.lua tak jak w poradnikach pokazuje mi błąd:


Checking project dependencies...
Compiling Project12.cbproj (Debug, Win32)
bcc32 command line for "File1.cpp"
d:\program files\embarcadero\rad studio\9.0\bin\bcc32.exe -D_DEBUG -D_RTLDLL -n.\Win32\Debug -I"C:\Program Files\Embarcadero\RAD
Studio\9.0\include\boost_1_39\boost\tr1\tr1";"C:\Program Files\Embarcadero\RAD Studio\9.0\include\boost_1_39";"d:\program files\embarcadero\rad
studio\9.0\include";"d:\program files\embarcadero\rad studio\9.0\include\dinkumware";"d:\program files\embarcadero\rad
studio\9.0\include\windows\crtl";"d:\program files\embarcadero\rad studio\9.0\include\windows\sdk";"d:\program files\embarcadero\rad
studio\9.0\include\windows\rtl";"d:\program files\embarcadero\rad studio\9.0\include\windows\vcl";"C:\Program Files\FastReports\LibD16";"d:\program
files\embarcadero\rad studio\9.0\RaveReports\Lib";"C:\Program Files\Raize\CS5\Lib\RS-XE2\Win32";"C:\Users\Ryszard\Documents\RAD Studio\9.0\hpp" -y -Q
-k -r- -c -tC -C8 -o.\Win32\Debug\File1.obj -w-par -Od -v -vi- -H=.\Win32\Debug\Project12.pch -H File1.cpp
ilink32 command line
d:\program files\embarcadero\rad studio\9.0\bin\ilink32.exe -L.\Win32\Debug;"d:\program files\embarcadero\rad studio\9.0\lib\Win32\debug";"d:\program
files\embarcadero\rad studio\9.0\lib\win32\release";"d:\program files\embarcadero\rad studio\9.0\lib\win32\release\psdk";"C:\Program
Files\FastReports\LibD16";"d:\program files\embarcadero\rad studio\9.0\RaveReports\Lib";"C:\Program Files\Raize\CS5\Lib\RS-XE2\Win32";
"C:\Users\Ryszard\Documents\RAD Studio\9.0\DCP" -j.\Win32\Debug;"d:\program files\embarcadero\rad studio\9.0\lib\Win32\debug";"d:\program
files\embarcadero\rad studio\9.0\lib\win32\release";"d:\program files\embarcadero\rad studio\9.0\lib\win32\release\psdk";"C:\Program
Files\FastReports\LibD16";"d:\program files\embarcadero\rad studio\9.0\RaveReports\Lib";"C:\Program Files\Raize\CS5\Lib\RS-XE2\Win32";
"C:\Users\Ryszard\Documents\RAD Studio\9.0\DCP" -l.\Win32\Debug -v -G8 -Tpe c0x32 .\Win32\Debug\File1.obj , .\Win32\Debug\Project12.exe ,
.\Win32\Debug\Project12.map , import32.lib cw32i.lib , , Project12.res
[ILINK32 Error] Error: Unresolved external '_luaL_newstate' referenced from C:\USERS\RYSZARD\DOCUMENTS\RAD STUDIO\PROJECTS\WIN32\DEBUG\FILE1.OBJ
[ILINK32 Error] Error: Unresolved external '_luaL_openlibs' referenced from C:\USERS\RYSZARD\DOCUMENTS\RAD STUDIO\PROJECTS\WIN32\DEBUG\FILE1.OBJ
[ILINK32 Error] Error: Unresolved external '_luaL_loadfilex' referenced from C:\USERS\RYSZARD\DOCUMENTS\RAD STUDIO\PROJECTS\WIN32\DEBUG\FILE1.OBJ
[ILINK32 Error] Error: Unresolved external '_lua_pcallk' referenced from C:\USERS\RYSZARD\DOCUMENTS\RAD STUDIO\PROJECTS\WIN32\DEBUG\FILE1.OBJ
[ILINK32 Error] Error: Unresolved external '_lua_close' referenced from C:\USERS\RYSZARD\DOCUMENTS\RAD STUDIO\PROJECTS\WIN32\DEBUG\FILE1.OBJ
[ILINK32 Error] Error: Unable to perform link
Failed
Elapsed time: 00:00:00.6



Nie wiem w czym błąd. Kod:

KOD cpp:     UKRYJ  


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

int main()
{
lua_State* lua = luaL_newstate();
luaL_openlibs(lua);
luaL_dofile(lua, "skrypt.lua");
lua_close(lua);
return 0;
}


Kiedy to Lua_* usuwam z int main() a dodaje do innego wszystko dobrze lecz nie włącza się skrypt a jak dodaje tam (jak na poradnikach) to zaczyna się błąd. Ktoś mi pomoże?
Avatar użytkownika
TNTeener
Bladawiec
Bladawiec
 
Posty: 14
Dołączył(a): wtorek, 28 lutego 2012, 13:41
Podziękował : 2
Otrzymał podziękowań: 0
System operacyjny: Windows XP/Vista/7
Kompilator: C++ Builder XE2
    Windows VistaChrome

Re: Lua i C++ - Błąd z otwieraniem skryptu

Nowy postprzez polymorphism » niedziela, 27 maja 2012, 18:34

A dodałeś do projektu odpowiednie biblioteki parsera lua?
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Lua i C++ - Błąd z otwieraniem skryptu

Nowy postprzez Darek_C++ » piątek, 17 sierpnia 2012, 16:45

@ Unresolved external '_luaL_newstate'
Raczej nie dodał :)
Avatar użytkownika
Darek_C++
Elektrowied
Elektrowied
 
Posty: 454
Dołączył(a): piątek, 25 lipca 2008, 14:33
Podziękował : 66
Otrzymał podziękowań: 4
System operacyjny: Windows XP Pro SP2
Kompilator: Turbo Explorer C++
Gadu Gadu: 0
    Windows XPFirefox

Re: Lua i C++ - Błąd z otwieraniem skryptu

Nowy postprzez Cyfrowy Baron » piątek, 17 sierpnia 2012, 17:47

Skąd można pobrać tą bibliotekę?



Czy w skład biblioteki wchodzi jakiś plik *.LIB?
Jeżeli tak to musisz ten plik załączyć do projektu np. w ten sposób:


KOD cpp:     UKRYJ  
#include <conio.h>
extern "C"{
#include <lua.h>
#include <lualib.h>
#include <lauxlib.h>

#pragma link "biblioteka.lib"
Dlaczego użyłeś extern?
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Lua i C++ - Błąd z otwieraniem skryptu

Nowy postprzez Darek_C++ » piątek, 17 sierpnia 2012, 18:06

Avatar użytkownika
Darek_C++
Elektrowied
Elektrowied
 
Posty: 454
Dołączył(a): piątek, 25 lipca 2008, 14:33
Podziękował : 66
Otrzymał podziękowań: 4
System operacyjny: Windows XP Pro SP2
Kompilator: Turbo Explorer C++
Gadu Gadu: 0
    Windows XPFirefox

Re: Lua i C++ - Błąd z otwieraniem skryptu

Nowy postprzez polymorphism » piątek, 17 sierpnia 2012, 18:13

Te LIBy są do Visuala, w Builderze nie przejdą.


p.s. wątek sprzed paru miesięcy.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Lua i C++ - Błąd z otwieraniem skryptu

Nowy postprzez Cyfrowy Baron » piątek, 17 sierpnia 2012, 18:36

Z informacji z podanej lokalizacji:

http://luabinaries.sourceforge.net/packaging.html napisał(a):The following platforms can be available:
[...]
Win32_bc55 Static library built with Borland C++ 5.5 Compiler -
https://downloads.embarcadero.com/free/c_builder ¹
Win32_bc56 Static library built with Borland C++ BuilderX 1.0 / Borland C++ 5.6 Compiler ¹,²
(the C++ BuilderX IDE can also be configured to use mingw3 or gcc3 versions.)
Win32_bc6 Static library built with Embarcadero C++ Builder 2010 / Embarcadero C++ 6 Compiler -
https://downloads.embarcadero.com/free/c_builder (trial)


Wynika, że można to skompilować pod C++Builder 2010 i X, ale nie pod XE2. Po skompilowaniu powinny być dostępne biblioteki dla środowiska C++Builder.



polymorphism napisał(a):p.s. wątek sprzed paru miesięcy.


To fakt, ale gdy ktoś trafi na ten wątek to już będzie wiedział...
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Lua i C++ - Błąd z otwieraniem skryptu

Nowy postprzez Darek_C++ » piątek, 17 sierpnia 2012, 18:48

Pod tym linkiem http://www.cyberforum.ru/cpp-builder/thread68085.html na dole są *.LIB do borlanda testowałem i same DLL działają, ale nic więcej na temat LUA nie napisze, bo sam dopiero się zapoznaje z LUA .

---------
Wracając do LUA jak wyjście ze wykonania skryptu *.lua wyświetlić w Memo ?
Avatar użytkownika
Darek_C++
Elektrowied
Elektrowied
 
Posty: 454
Dołączył(a): piątek, 25 lipca 2008, 14:33
Podziękował : 66
Otrzymał podziękowań: 4
System operacyjny: Windows XP Pro SP2
Kompilator: Turbo Explorer C++
Gadu Gadu: 0
    Windows XPFirefox

Re: Lua i C++ - Błąd z otwieraniem skryptu

Nowy postprzez polymorphism » piątek, 17 sierpnia 2012, 19:31

Przejrzyj przykładowe kody, zapewne znajdziesz to, czego szukasz.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Lua i C++ - Błąd z otwieraniem skryptu

Nowy postprzez Darek_C++ » piątek, 17 sierpnia 2012, 19:35

No właśnie szukałem wtedy stosunkowo długo, i szukam teraz i nie mogę ruszyć tej kwestii :(
Między innymi tu http://firsthost.nazwa.pl/wordpress/201 ... w-c-wstep/
Avatar użytkownika
Darek_C++
Elektrowied
Elektrowied
 
Posty: 454
Dołączył(a): piątek, 25 lipca 2008, 14:33
Podziękował : 66
Otrzymał podziękowań: 4
System operacyjny: Windows XP Pro SP2
Kompilator: Turbo Explorer C++
Gadu Gadu: 0
    Windows XPFirefox

Re: Lua i C++ - Błąd z otwieraniem skryptu

Nowy postprzez polymorphism » piątek, 17 sierpnia 2012, 20:02

A to:
KOD cpp:     UKRYJ  
...

int main(void)
{
        lua_State *luaState = lua_open();
        int err;

        if ((err = lua_load(luaState, reader, (void *) script, "script")) == 0)
        {
                lua_call(luaState, 0, 0);

                lua_getfield(luaState, LUA_GLOBALSINDEX, "foobar");
                lua_pushnumber(luaState, 3);
                lua_pushnumber(luaState, 7);

                if (lua_pcall (luaState, 2, 1, 0))
                {
                        cout << lua_tostring(luaState, -1) << "\n";  //<--- TUTAJ
                }
        }

        ...
}

to co? Poczytaj trochę o VM tego języka, bo tak to nic nie zrobisz.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Lua i C++ - Błąd z otwieraniem skryptu

Nowy postprzez Darek_C++ » piątek, 17 sierpnia 2012, 20:10

Mam kod:
KOD cpp:     UKRYJ  
        /**
        -- Hello.lua
        print("Hello World")
        */


        int res = luaL_loadfile(MyLua,"Hello.lua");
        if(res!=0)
        {
                ShowMessage((String) lua_tostring(MyLua,-1) );
                return;
        }

        int errfunc;
        int wynik = lua_pcall(MyLua, 0, 1,  errfunc);
        if(wynik!=0)
        {
                ShowMessage((String) lua_tostring(MyLua,-1) );
                return;
        }
        ShowMessage(lua_gettop(MyLua));
        const char * str2 = lua_tostring(MyLua, lua_gettop(MyLua));
        Memo1->Lines->Add(str2);
jednak nie wyświetla się nic w memo :roll:
Avatar użytkownika
Darek_C++
Elektrowied
Elektrowied
 
Posty: 454
Dołączył(a): piątek, 25 lipca 2008, 14:33
Podziękował : 66
Otrzymał podziękowań: 4
System operacyjny: Windows XP Pro SP2
Kompilator: Turbo Explorer C++
Gadu Gadu: 0
    Windows XPFirefox

Re: Lua i C++ - Błąd z otwieraniem skryptu

Nowy postprzez polymorphism » piątek, 17 sierpnia 2012, 20:20

Nie wyświetla, bo tekst wysyłasz na standardowe wyjście funkcją print. To, co pokazałem wczęsniej, dotyczyło wartości zwracanych przez funkcję. Być może można jakoś przekierować wyjście... tylko czy jest sens?
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Lua i C++ - Błąd z otwieraniem skryptu

Nowy postprzez Darek_C++ » piątek, 17 sierpnia 2012, 20:27

Hmmm, myślałem, że to co jest "drukowane" w skrypcie można w ten sposób właśnie "pobrać" do dalszego wykorzystania już w programie.
Czy jest sens - od czegoś chce zacząć jak chodzi o LUA tak z samej ciekawości poznając przy okazji do czego mógł bym wykorzystać w praktyce skrypty LUA :)
----
W takim razie jak coś "zwrócić" z skryptu LUA do wyświetlenia w Memo ?
---
Ale jak zmienie skrypt LUA dodajac

KOD lua:     UKRYJ  
-- Hello.lua
print("Hello World")
for i = 1,30 do print(i) end


To w memo wyświetli się 30, wiec ..
------
Doszedłem, że return "zwraca" i wypisuje do memo:

KOD lua:     UKRYJ  
-- Hello.lua
return "coś do wypisania i to działa";

i tak można :
KOD lua:     UKRYJ  
-- Hello.lua
local s = 'To sa dane do wyświetlenia : )'
-- for i=1,10 do s = s .. math.random() .. '\n' end
io.stdout:write(s)

Hi, robie postępy :)
Trochę dziwny jezyk, bo np połączenie dwóch stringów robi się dwiema kropkami:
KOD lua:     UKRYJ  
-- Hello.lua
local s1 = 'To sa dane do wyświetlenia 1'
local s2 = 'To sa dane do wyświetlenia 2'
 s1 = s1 .. s2
io.stdout:write(s1)

http://lua.org.pl/5.1/manual.html
Avatar użytkownika
Darek_C++
Elektrowied
Elektrowied
 
Posty: 454
Dołączył(a): piątek, 25 lipca 2008, 14:33
Podziękował : 66
Otrzymał podziękowań: 4
System operacyjny: Windows XP Pro SP2
Kompilator: Turbo Explorer C++
Gadu Gadu: 0
    Windows XPFirefox

Re: Lua i C++ - Błąd z otwieraniem skryptu

Nowy postprzez polymorphism » sobota, 18 sierpnia 2012, 18:27

Doszedłem, że return "zwraca" i wypisuje do memo:

Tu chodzi o to, że dane powinny być odłożone na stosie VM, z którego odczytujesz je między innymi funkcją lua_tostring (vide drugi parametr). Dlatego print nie działa, a return już tak.

Możesz też stworzyć własną wersję funkcji print, która będzie odbierać dane po stronie aplikacji wysłane "ze skryptu".
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 3 gości