lua - lineker problém

Sekcia: Programovanie 15.03.2007 | 20:15
Avatar Marián Sova Ubuntu 10.10  Používateľ
Nedarí sa mi nalinkovať knižnica liblua. Mám nainštalované z repozitárov aj *-dev balíky. Ale linker stále píše toto: /usr/bin/ld: cannot find -lliblua5.1
collect2: ld returned 1 exit status

A pri tom v priečinku /usr/lib mám súbor liblua5.1.a

Neviete, čo s tým?
Čo ťa nezabije, to ťa posilní | Leták na propagáciu jabbera v pdf | www.mikroprocesory.sk
    • Re: lua - lineker problém 15.03.2007 | 20:19
      Avatar uid0 Debian  Používateľ
      to je pre ten program? tajomny a velkolepy :) inac lua sa mi tiez pozdava, ale pozeral som zatial len tak zbezne

      k problemu: vynechaj "lib" za "-l"
      Debian. apt-get into it…
      • Re: lua - lineker problém 15.03.2007 | 20:24
        Avatar Marián Sova Ubuntu 10.10  Používateľ
        jj. Nepomohlo tá istá chyba :(
        Čo ťa nezabije, to ťa posilní | Leták na propagáciu jabbera v pdf | www.mikroprocesory.sk
        • Re: lua - lineker problém 15.03.2007 | 20:36
          Avatar uid0 Debian  Používateľ
          to nie je mozne. a ako sa presne vola ten subor? pripadne explicitne udaj cestu -L/usr/lib
          Debian. apt-get into it…
          • Re: lua - lineker problém 15.03.2007 | 20:39
            Avatar Marián Sova Ubuntu 10.10  Používateľ
            No to som si myslel aj ja. Ani keď zadám tú cestu -L/usr/lib. To som všetko skúšal.Nechápem tomu.
            Mám tieto súbory:
            /usr/lib/liblua5.1.a
            /usr/lib/liblua5.1.la
            /usr/lib/liblua5.1.so
            /usr/lib/liblua5.1.so.0
            /usr/lib/liblua5.1.so.0.0.0
            Čo ťa nezabije, to ťa posilní | Leták na propagáciu jabbera v pdf | www.mikroprocesory.sk
            • Re: lua - lineker problém 15.03.2007 | 20:51
              Avatar uid0 Debian  Používateľ
              ok, tak som to nahodil.

              prva vec: pouziva to pkg-config, takze pouzivaj v makefile

              `pkg-config --libs lua5.1` a `pkg-config --cflags lua5.1`

              druha vec: pochybujem, ze to pomoze, pretoze s parametrom -llua5.1 mi to ide :/
              Debian. apt-get into it…
    • Re: lua - lineker problém 15.03.2007 | 20:26
      skywaker   Návštevník
      skus napisat celu cestu k "*.so" suboru... najdi si to pomocou locate a potom tam dosat celu cestu

      inac ma niekto skusenosti ako pouzit luu vo vlastnom C projekte teda napriklad v lua skripte bude funkcia pixel(10,10, 5) a ono to vykresli bod na obrazovku. samozrejme kniznica allegro. teda ci sa daju robit vlastne prikazy a tie dekodovat. viem ze sa to da videl som jednu hru a ta vyuzivala luu. dakujem
      • Re: lua - lineker problém 15.03.2007 | 20:31
        Avatar Marián Sova Ubuntu 10.10  Používateľ
        Bohužial, nepomohlo. Tá istá chyba
        Čo ťa nezabije, to ťa posilní | Leták na propagáciu jabbera v pdf | www.mikroprocesory.sk
        • Re: lua - lineker problém 15.03.2007 | 20:47
          WlaSaTy   Návštevník
          spustil si ldconfig?
      • Re: lua - lineker problém 16.03.2007 | 18:07
        Avatar Marián Sova Ubuntu 10.10  Používateľ
        Dá sa to. Pozri si funkcie lua_call v manuále.
        Nejako takto:
        treba si zadefinovať funkciu:
        #include <stdio.h>
        extern "C" {
        #include "lua50/lua.h"
        #include "lua50/lualib.h"
        #include "lua50/lauxlib.h"
        }

        //Funkcia, čo obslúži lua funkciu
        static int init(lua_State *L)
        {
        printf("Bola zavolana funkcia init\n" );
        }

        int main()
        {
        //Otvorenie lua suboru
        lua_State *L = lua_open();
        luaL_loadfile(L,"subor.lua" );

        //Definuje funkciu init a naviaže na C funkciu init (vyššie)
        lua_pushstring(L,"init" );
        lua_pushcfunction(L,init);
        lua_settable(L,LUA_GLOBALSINDEX);

        //Spôsobí volanie funkcii z lua súboru
        lua_pcall(L,0,LUA_MULTRET,0);

        lua_close (L);
        return 0;
        }

        Lua súbor bude vyzerať nejako takto:
        .
        .
        init()
        .
        .

        Dá sa to aj s argumentami. Ale to ešte neviem

        Čo ťa nezabije, to ťa posilní | Leták na propagáciu jabbera v pdf | www.mikroprocesory.sk
        • Re: lua - lineker problém 16.03.2007 | 18:30
          Avatar Marián Sova Ubuntu 10.10  Používateľ
          Ja by som to potreboval ale opačne. Aby som mohol zavolať lua funkciu z programu v C
          Čo ťa nezabije, to ťa posilní | Leták na propagáciu jabbera v pdf | www.mikroprocesory.sk
          • Re: lua - lineker problém 16.03.2007 | 19:34
            Avatar uid0 Debian  Používateľ
            a co to skusit volat cez lua_dostring()?
            Debian. apt-get into it…
            • Re: lua - lineker problém 16.03.2007 | 20:43
              skywaker   Návštevník
              dakujem majo velmi si mi pomohol idem to vyskusat.
            • Re: lua - lineker problém 16.03.2007 | 20:50
              Avatar Marián Sova Ubuntu 10.10  Používateľ
              Našiel som takéto riešenie:
              int call_nieco( lua_State *pLuaState, int arg1, int arg2)
              {
              // Push the "someLuaFunction" function onto the stack
              lua_getglobal( pLuaState, "nieco" );

              // Push the first argument onto the stack
              lua_pushnumber( pLuaState, arg1 );

              // Push the second argument onto the stack
              lua_pushnumber( pLuaState, arg2 );

              // Call the function with 2 arguments and 1 return value.
              lua_call( pLuaState, 2, 1 );

              // Fetch the result from the stack
              int nReturnValue = (int)lua_tonumber( pLuaState, -1 );

              // Restore the stack
              lua_pop( pLuaState, 1 );

              return nReturnValue;
              }


              A potom v programe sa zavolá takto:
              call_nieco(L,2,8);


              A lua súbor bude vyzerať napríklad takto:
              function nieco(obj1,obj2)
              print("Bola zavolana funkcia nieco s parametrami ",obj1,obj2)
              return obj1*5+obj2/2
              end


              Len ešte by to chcelo aby sa pri zavolaní tejto funkcie prerušila práve prebiehajúca funkcia a potom sa v nej pokračovalo
              Čo ťa nezabije, to ťa posilní | Leták na propagáciu jabbera v pdf | www.mikroprocesory.sk