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

          Understanding generators in Python2019 Community Moderator ElectionGenerator function not working pythonFor loop not executing two timesGenerators - Printing generated valuesWhy can a python generator only be used once?What exactly do generators do?What does the “yield” keyword do?What does “list comprehension” mean? How does it work and how can I use it?sklearn Kfold acces single fold instead of for loopIs a generator the callable? Which is the generator?Apply Border To Range Of Cells Using OpenpyxlCalling an external command in PythonWhat are metaclasses in Python?What is the difference between @staticmethod and @classmethod?Finding the index of an item given a list containing it in PythonDifference between append vs. extend list methods in PythonHow can I safely create a nested directory in Python?Does Python have a ternary conditional operator?Understanding slice notationUnderstanding Python super() with __init__() methodsDoes Python have a string 'contains' substring method?

          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