How can I call Lua scripts from a C program?Calling a Lua script from C: errorsBest way for Lua script to call a C shared lib?lua module is not loading librariesLua error loading module 'libpng' (Torch, MacOSX)parse lua script and connect with C++ codesload lua lib in a c appLua - Reseting the state of a script without reparsing itLua Error Loading Limlib2 Library even though it's already installed?Error with Lua5.3 and LuaL_openlibOpenresty nginx throwing zlib not found error

Avoiding estate tax by giving multiple gifts

What is the best translation for "slot" in the context of multiplayer video games?

A particular customize with green line and letters for subfloat

Fine Tuning of the Universe

How did Arya survive the stabbing?

Would a high gravity rocky planet be guaranteed to have an atmosphere?

Two monoidal structures and copowering

Unreliable Magic - Is it worth it?

Are student evaluations of teaching assistants read by others in the faculty?

How to check is there any negative term in a large list?

Why are there no referendums in the US?

Pole-zeros of a real-valued causal FIR system

How does buying out courses with grant money work?

Is a stroke of luck acceptable after a series of unfavorable events?

Is HostGator storing my password in plaintext?

Is there a good way to store credentials outside of a password manager?

Hostile work environment after whistle-blowing on coworker and our boss. What do I do?

Increase performance creating Mandelbrot set in python

How do we know the LHC results are robust?

How do scammers retract money, while you can’t?

Why not increase contact surface when reentering the atmosphere?

Tiptoe or tiphoof? Adjusting words to better fit fantasy races

Go Pregnant or Go Home

How to safely derail a train during transit?



How can I call Lua scripts from a C program?


Calling a Lua script from C: errorsBest way for Lua script to call a C shared lib?lua module is not loading librariesLua error loading module 'libpng' (Torch, MacOSX)parse lua script and connect with C++ codesload lua lib in a c appLua - Reseting the state of a script without reparsing itLua Error Loading Limlib2 Library even though it's already installed?Error with Lua5.3 and LuaL_openlibOpenresty nginx throwing zlib not found error













3















I have 2 lua scripts. One require another one. So how can I call it from a C program?



For example:



main.lua



local foo = require "foo"

function main()
foo.bar()
end

main()


foo.lua



function bar( )
io.write("hello, world!n")
end


And this is my C program:



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

int main()
int status, result;
lua_State *L;
L = luaL_newstate();
luaL_openlibs(L);

status = luaL_loadfile(L, "main.lua");
if (status)
fprintf(stderr, "Couldn't load file: %sn", lua_tostring(L, -1));
exit(1);


result = lua_pcall(L, 0, LUA_MULTRET, 0);
if (result)
fprintf(stderr, "Failed to run script: %sn", lua_tostring(L, -1));
exit(1);


lua_close(L);

return 0;



It throws a runtime error:




Failed to run script: main.lua:130: module 'foo' not found: no field
package.preload['foo'] no file '/usr/local/share/lua/5.3/foo.lua' no
file '/usr/local/share/lua/5.3/foo/init.lua' no file
'/usr/local/lib/lua/5.3/foo.lua' no file
'/usr/local/lib/lua/5.3/foo/init.lua' no file './foo.lua' no file
'./foo/init.lua' no file '/usr/local/lib/lua/5.3/foo.so' no file
'/usr/local/lib/lua/5.3/loadall.so' no file './foo.so'




I think it is because foo.lua is not loaded into the lua virtual machine, but I can't find API like load files or do files. So what should I do?










share|improve this question


























    3















    I have 2 lua scripts. One require another one. So how can I call it from a C program?



    For example:



    main.lua



    local foo = require "foo"

    function main()
    foo.bar()
    end

    main()


    foo.lua



    function bar( )
    io.write("hello, world!n")
    end


    And this is my C program:



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

    int main()
    int status, result;
    lua_State *L;
    L = luaL_newstate();
    luaL_openlibs(L);

    status = luaL_loadfile(L, "main.lua");
    if (status)
    fprintf(stderr, "Couldn't load file: %sn", lua_tostring(L, -1));
    exit(1);


    result = lua_pcall(L, 0, LUA_MULTRET, 0);
    if (result)
    fprintf(stderr, "Failed to run script: %sn", lua_tostring(L, -1));
    exit(1);


    lua_close(L);

    return 0;



    It throws a runtime error:




    Failed to run script: main.lua:130: module 'foo' not found: no field
    package.preload['foo'] no file '/usr/local/share/lua/5.3/foo.lua' no
    file '/usr/local/share/lua/5.3/foo/init.lua' no file
    '/usr/local/lib/lua/5.3/foo.lua' no file
    '/usr/local/lib/lua/5.3/foo/init.lua' no file './foo.lua' no file
    './foo/init.lua' no file '/usr/local/lib/lua/5.3/foo.so' no file
    '/usr/local/lib/lua/5.3/loadall.so' no file './foo.so'




    I think it is because foo.lua is not loaded into the lua virtual machine, but I can't find API like load files or do files. So what should I do?










    share|improve this question
























      3












      3








      3








      I have 2 lua scripts. One require another one. So how can I call it from a C program?



      For example:



      main.lua



      local foo = require "foo"

      function main()
      foo.bar()
      end

      main()


      foo.lua



      function bar( )
      io.write("hello, world!n")
      end


      And this is my C program:



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

      int main()
      int status, result;
      lua_State *L;
      L = luaL_newstate();
      luaL_openlibs(L);

      status = luaL_loadfile(L, "main.lua");
      if (status)
      fprintf(stderr, "Couldn't load file: %sn", lua_tostring(L, -1));
      exit(1);


      result = lua_pcall(L, 0, LUA_MULTRET, 0);
      if (result)
      fprintf(stderr, "Failed to run script: %sn", lua_tostring(L, -1));
      exit(1);


      lua_close(L);

      return 0;



      It throws a runtime error:




      Failed to run script: main.lua:130: module 'foo' not found: no field
      package.preload['foo'] no file '/usr/local/share/lua/5.3/foo.lua' no
      file '/usr/local/share/lua/5.3/foo/init.lua' no file
      '/usr/local/lib/lua/5.3/foo.lua' no file
      '/usr/local/lib/lua/5.3/foo/init.lua' no file './foo.lua' no file
      './foo/init.lua' no file '/usr/local/lib/lua/5.3/foo.so' no file
      '/usr/local/lib/lua/5.3/loadall.so' no file './foo.so'




      I think it is because foo.lua is not loaded into the lua virtual machine, but I can't find API like load files or do files. So what should I do?










      share|improve this question














      I have 2 lua scripts. One require another one. So how can I call it from a C program?



      For example:



      main.lua



      local foo = require "foo"

      function main()
      foo.bar()
      end

      main()


      foo.lua



      function bar( )
      io.write("hello, world!n")
      end


      And this is my C program:



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

      int main()
      int status, result;
      lua_State *L;
      L = luaL_newstate();
      luaL_openlibs(L);

      status = luaL_loadfile(L, "main.lua");
      if (status)
      fprintf(stderr, "Couldn't load file: %sn", lua_tostring(L, -1));
      exit(1);


      result = lua_pcall(L, 0, LUA_MULTRET, 0);
      if (result)
      fprintf(stderr, "Failed to run script: %sn", lua_tostring(L, -1));
      exit(1);


      lua_close(L);

      return 0;



      It throws a runtime error:




      Failed to run script: main.lua:130: module 'foo' not found: no field
      package.preload['foo'] no file '/usr/local/share/lua/5.3/foo.lua' no
      file '/usr/local/share/lua/5.3/foo/init.lua' no file
      '/usr/local/lib/lua/5.3/foo.lua' no file
      '/usr/local/lib/lua/5.3/foo/init.lua' no file './foo.lua' no file
      './foo/init.lua' no file '/usr/local/lib/lua/5.3/foo.so' no file
      '/usr/local/lib/lua/5.3/loadall.so' no file './foo.so'




      I think it is because foo.lua is not loaded into the lua virtual machine, but I can't find API like load files or do files. So what should I do?







      c lua






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Mar 8 at 11:17









      0x119010x11901

      798




      798






















          1 Answer
          1






          active

          oldest

          votes


















          2














          It works fine, your foo.lua is wrong, change it to:



          local foo = 

          function foo.bar()
          io.write("Hello World!n")
          end

          return foo


          and it works:



          $ ls
          foo.lua luabr.c main.lua
          BladeMight ~/lua/tests/605
          $ gcc luabr.c -llua && ./a
          Hello World!


          ** luabr.c is your C program code.






          share|improve this answer

























          • Thank you very much!

            – 0x11901
            Mar 8 at 13:35










          Your Answer






          StackExchange.ifUsing("editor", function ()
          StackExchange.using("externalEditor", function ()
          StackExchange.using("snippets", function ()
          StackExchange.snippets.init();
          );
          );
          , "code-snippets");

          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "1"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );













          draft saved

          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55062121%2fhow-can-i-call-lua-scripts-from-a-c-program%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          2














          It works fine, your foo.lua is wrong, change it to:



          local foo = 

          function foo.bar()
          io.write("Hello World!n")
          end

          return foo


          and it works:



          $ ls
          foo.lua luabr.c main.lua
          BladeMight ~/lua/tests/605
          $ gcc luabr.c -llua && ./a
          Hello World!


          ** luabr.c is your C program code.






          share|improve this answer

























          • Thank you very much!

            – 0x11901
            Mar 8 at 13:35















          2














          It works fine, your foo.lua is wrong, change it to:



          local foo = 

          function foo.bar()
          io.write("Hello World!n")
          end

          return foo


          and it works:



          $ ls
          foo.lua luabr.c main.lua
          BladeMight ~/lua/tests/605
          $ gcc luabr.c -llua && ./a
          Hello World!


          ** luabr.c is your C program code.






          share|improve this answer

























          • Thank you very much!

            – 0x11901
            Mar 8 at 13:35













          2












          2








          2







          It works fine, your foo.lua is wrong, change it to:



          local foo = 

          function foo.bar()
          io.write("Hello World!n")
          end

          return foo


          and it works:



          $ ls
          foo.lua luabr.c main.lua
          BladeMight ~/lua/tests/605
          $ gcc luabr.c -llua && ./a
          Hello World!


          ** luabr.c is your C program code.






          share|improve this answer















          It works fine, your foo.lua is wrong, change it to:



          local foo = 

          function foo.bar()
          io.write("Hello World!n")
          end

          return foo


          and it works:



          $ ls
          foo.lua luabr.c main.lua
          BladeMight ~/lua/tests/605
          $ gcc luabr.c -llua && ./a
          Hello World!


          ** luabr.c is your C program code.







          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited Mar 8 at 11:38

























          answered Mar 8 at 11:32









          BladeMightBladeMight

          1,5211427




          1,5211427












          • Thank you very much!

            – 0x11901
            Mar 8 at 13:35

















          • Thank you very much!

            – 0x11901
            Mar 8 at 13:35
















          Thank you very much!

          – 0x11901
          Mar 8 at 13:35





          Thank you very much!

          – 0x11901
          Mar 8 at 13:35



















          draft saved

          draft discarded
















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid …


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55062121%2fhow-can-i-call-lua-scripts-from-a-c-program%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Thal And Out Agency railway station See also References External links Navigation menuOfficial Web Site of Pakistan RailwaysArchivedOfficial Web Site of Pakistan Railwayseeexpanding ite

          How can I change the color of pagination dots of UIPageControl?How to change UIPageControl dotsIs there a way to change page indicator dots colorCustomize dot with image of UIPageControl at index 0 of UIPageControlNo visible @interface for 'NSObject<PageControlDelegate>' declares the selector 'pageControlPageDidChange:'How to change the color of pagination dots in UIPageControl with a different color per pagepagecontrol indicator custom image instead of DefaultChanging the colour of UIPageControl dots in MonoTouchpagecontrol selectable page visibility color?Alternative way to load ViewControllers on a UIPageControlHow to set only layer.border-color for UIpage control dots in swiftHow can I develop for iPhone using a Windows development machine?How to change the name of an iOS app?UITableView - change section header coloruipagecontrol indicator(dot)issueCustom UIPageControl dots color not changingchange the interspace between UIPageControl dotsHow to change Status Bar text color in iOSHow can I change image tintColor in iOS and WatchKitUIPageControl dots with larger space in between each dotsHow to change the color of pagination dots in UIPageControl with a different color per page

          Posting a File and Associated Data to a RESTful WebService preferably as JSON2019 Community Moderator ElectionREST URI convention - Singular or plural name of resource while creating itUploading both data and files in one form using Ajax?How do I upload a file with metadata using a REST web service?REST API - file (ie images) processing - best practicesSpring: JSON data and file in the same requestREST API Put large dataPosting a file and JSON data to Spring rest serviceRESTful Web Service Upload/Download Large Data With JSONREST API Design sending JSON data and a file to the api in same requestPost JSONArray to REST servicePUT vs. POST in RESTParsing values from a JSON file?JavaScript/jQuery to download file via POST with JSON dataHow do I upload a file with metadata using a REST web service?How to POST JSON data with Curl from Terminal/Commandline to Test Spring REST?Separate REST JSON API server and client?what's the correct way to send a file from REST web service to client?How do I write JSON data to a file?What is “406-Not Acceptable Response” in HTTP?REST API - file (ie images) processing - best practices