lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


Hi,

I am building a C++ app that calls scripts, which many times require C modules.
I've researched the list on this topic and I've also looked at the
wiki but I still have
a few questions (pls note I'm new to Lua). This is my first message, I'll post a
second one with more questions.

I built a simple module compiled in C++ which has the following
luaopen_ function.
I've tried two different approaches to run the script, the first one
works and the second
doesn't. Can somebody help me understand why the second approach fails?
I also don't understand why in the second script prints twice the package.cpath

Thanks
jose

----------------------------------------------------------------------------------------------------------------------------

extern "C"  {

int luaopen_testlib(lua_State *L)
{
	std::cout << "luaopen_testlib" << std::endl;
	luaL_register(L, "testlib", testlib);
	return 1;
}

}

Approach 1:  Works
===============

local mylib = package.loadlib("./testlib.so", "luaopen_testlib")
print "initializing"
mylib()
print (package.cpath)

* Output:
initializing
luaopen_testlib
./?.so;/usr/lib/lua/5.1/?.so;/usr/local/lib/lua/5.1/?.so


Approach 2: Fails
==============

print (package.cpath)
require 'testlib'

* Output:
./?.so;/usr/lib/lua/5.1/?.so;/usr/local/lib/lua/5.1/?.so
./?.so;/usr/lib/lua/5.1/?.so;/usr/local/lib/lua/5.1/?.so
lua: ./testlib.lua:14: loop or previous error loading module 'testlib'
stack traceback:
        [C]: in function 'require'
        ./testlib.lua:14: in main chunk
        [C]: in function 'require'
        testlib.lua:14: in main chunk
        [C]: ?