<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Lua on kamuszhou&#39;s blog</title>
    <link>https://ykyi.net/tags/lua/</link>
    <description>Recent content in Lua on kamuszhou&#39;s blog</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <lastBuildDate>Wed, 22 Jan 2014 09:21:49 +0000</lastBuildDate>
    <atom:link href="https://ykyi.net/tags/lua/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>运行loadlib()提示attempt to call global ‘loadlib’ (a nil value)</title>
      <link>https://ykyi.net/?p=1177/</link>
      <pubDate>Wed, 22 Jan 2014 09:21:49 +0000</pubDate>
      <guid>https://ykyi.net/?p=1177/</guid>
      <description>&lt;p&gt;2009年的时候用过lua，当时在windows上写金山急救箱的恶意软件库引擎。&lt;/p&gt;
&lt;p&gt;时隔多年，又要玩一把lua. 重拾lua，在lua控制台用loadlib载入动态链接库时出错：&lt;/p&gt;
&lt;pre class=&#34;brush:other&#34;&gt;&amp;gt; loadlib(&#34;libhello.so&#34;, &#34;*&#34;)
stdin:1: attempt to call global &amp;#39;loadlib&amp;#39; (a nil value)
stack traceback:
    stdin:1: in main chunk
    [C]: in ?&lt;/pre&gt;
&lt;p&gt;Lua表示在全局域中没有loadlib。google后发现两种解决方案：&lt;/p&gt;
&lt;p&gt;第一种认为这种错误是因为没有把loadlib编译进lua中，需要改makefile.如此贴的楼主所述： &lt;a href=&#34;http://lua-users.org/lists/lua-l/2009-02/msg00463.html&#34;&gt;http://lua-users.org/lists/lua-l/2009-02/msg00463.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;第二种是在csdn上的贴子，要改lua的源文件中的一个define，实际上这种方法也是可以在makefile中define一个变量的。&lt;/p&gt;
&lt;p&gt;不过！！！&lt;/p&gt;
&lt;p&gt;问题其实更简单，不需要改什么makefile文件：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://lua-users.org/lists/lua-l/2009-02/msg00466.html&#34;&gt;http://lua-users.org/lists/lua-l/2009-02/msg00466.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;lua在5.0以后，loadlib已经不在全局域中了，loadlib在package名字空间中了。&lt;/p&gt;
&lt;p&gt;这样就好了：&lt;/p&gt;
&lt;p&gt;package.loadlib(&amp;ldquo;libhello.so&amp;rdquo;, &amp;ldquo;*&amp;rdquo;)&lt;/p&gt;
&lt;p&gt;实际上，loadlib是一个底层的函数。不像require,loadlib不在path里进行查找，也不自动添加文件名后缀。这个函数在某些平台上不被支持，因为ANSI并没有要求支持动态链接库。&lt;/p&gt;
&lt;p&gt;copyright ykyi.net&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
