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

          Can't initialize raids on a new ASUS Prime B360M-A motherboard2019 Community Moderator ElectionSimilar to RAID config yet more like mirroring solution?Can't get motherboard serial numberWhy does the BIOS entry point start with a WBINVD instruction?UEFI performance Asus Maximus V Extreme

          Identity Server 4 is not redirecting to Angular app after login2019 Community Moderator ElectionIdentity Server 4 and dockerIdentityserver implicit flow unauthorized_clientIdentityServer Hybrid Flow - Access Token is null after user successful loginIdentity Server to MVC client : Page Redirect After loginLogin with Steam OpenId(oidc-client-js)Identity Server 4+.NET Core 2.0 + IdentityIdentityServer4 post-login redirect not working in Edge browserCall to IdentityServer4 generates System.NullReferenceException: Object reference not set to an instance of an objectIdentityServer4 without HTTPS not workingHow to get Authorization code from identity server without login form

          2005 Ahvaz unrest Contents Background Causes Casualties Aftermath See also References Navigation menue"At Least 10 Are Killed by Bombs in Iran""Iran"Archived"Arab-Iranians in Iran to make April 15 'Day of Fury'"State of Mind, State of Order: Reactions to Ethnic Unrest in the Islamic Republic of Iran.10.1111/j.1754-9469.2008.00028.x"Iran hangs Arab separatists"Iran Overview from ArchivedConstitution of the Islamic Republic of Iran"Tehran puzzled by forged 'riots' letter""Iran and its minorities: Down in the second class""Iran: Handling Of Ahvaz Unrest Could End With Televised Confessions""Bombings Rock Iran Ahead of Election""Five die in Iran ethnic clashes""Iran: Need for restraint as anniversary of unrest in Khuzestan approaches"Archived"Iranian Sunni protesters killed in clashes with security forces"Archived