Guys,
I'm using luajit as a shared library (libluajit.so) embedded in an C++ app.
I've a shared library provided by a third party vendor (libctosapi.so) when
trying to call a C function in this library from LUA using ffy I get
'undefined symbol'.
Any kind of help is appreciated!

*LUA Script (script.lua)*

local ffi = require("ffi")

ffi.cdef[[
unsigned short CTOS_PrinterPutString(unsigned char* baBuf);
]]

local ctosapi = ffi.load("ctosapi")

x = 0
for i = 1, #foo do
  x = x + foo[i]
  ctosapi.CTOS_PrinterPutString("Test")
end

return x

*C++ Main*
int main(int argc,char *argv[])
{
    BYTE key;

    CTOS_LCDTClearDisplay();

    int status, result, i;
    double sum;
    lua_State *L;

    L = luaL_newstate();

    luaL_openlibs(L); /* Load Lua libraries */

    status = luaL_loadfile(L, "script.lua");
    if (status) {
        /* If something went wrong, error message is at the top of */
        /* the stack */
        fprintf(stderr, "Couldn't load file: %s\n", lua_tostring(L, -1));
        exit(1);
    }

    lua_newtable(L);    /* We will pass a table */

    for (i = 1; i <= 5; i++) {
        lua_pushnumber(L, i);   /* Push the table index */
        lua_pushnumber(L, i*2); /* Push the cell value */
        lua_rawset(L, -3);      /* Stores the pair in the table */
    }

    lua_setglobal(L, "foo");

    result = lua_pcall(L, 0, LUA_MULTRET, 0);
    if (result) {
        fprintf(stderr, "Failed to run script: %s\n", lua_tostring(L, -1));
        ABI_PrinterPutString((UCHAR *)lua_tostring(L, -1));
        exit(1);
    }

    sum = lua_tonumber(L, -1);

    if (sum == 30)
        ABI_PrinterPutString((UCHAR *)"SUCCESS!!!");

    lua_pop(L, 1);  /* Take the returned value out of the stack */
    lua_close(L);   /* Cya, Lua */

    CTOS_KBDGet(&key);

    exit(0);
}


*Compile/Linker Output*

"/usr/bin/make" -f nbproject/Makefile-Release.mk QMAKE= SUBPROJECTS=
.clean-conf
make[1]: Entering directory `/cygdrive/c/dev/abidea/V8_TEST_VS5'
rm -f -r build/Release
rm -f dist/V5S/App/V8_TEST_VS5.exe
make[1]: Leaving directory `/cygdrive/c/dev/abidea/V8_TEST_VS5'


CLEAN SUCCESSFUL (total time: 670ms)

"/usr/bin/make" -f nbproject/Makefile-Release.mk QMAKE= SUBPROJECTS=
.build-conf
make[1]: Entering directory `/cygdrive/c/dev/abidea/V8_TEST_VS5'
"/usr/bin/make"  -f nbproject/Makefile-Release.mk
dist/V5S/App/V8_TEST_VS5.exe
make[2]: Entering directory `/cygdrive/c/dev/abidea/V8_TEST_VS5'
mkdir -p build/Release/Gnueabi-Windows
arm-brcm-linux-gnueabi-g++ "-IC:\Program Files
(x86)\Castles\VEGA5000S\include" -fsigned-char -Wundef -Wno-trigraphs
-Wimplicit -Wformat    -c -O2 -I/cygdrive/C/Program\ Files\
\(x86\)/Castles/VEGA5000S/include -o
build/Release/Gnueabi-Windows/appmain.o appmain.cpp
mkdir -p dist/V5S/App
arm-brcm-linux-gnueabi-g++ -L . "-LC:\Program Files
(x86)\Castles\VEGA5000S\lib" "-LC:\Program Files
(x86)\Castles\VEGA5000S\lib_not_builtin"  -o dist/V5S/App/V8_TEST_VS5
 build/Release/Gnueabi-Windows/appmain.o -lcaethernet -lcafont -lcafs
-lcakms -lcalcd -lcamodem -lcapmodem -lcaprt -lcartc -lcauart -lcauldpm
-lcausbh -lcagsm -lcabarcode -lpthread -ldl -lcaclvw -lcatls -lctosapi
-lcrypto -lcurl -lssl -lz -lfreetype -lluajit
make[2]: Leaving directory `/cygdrive/c/dev/abidea/V8_TEST_VS5'
make[1]: Leaving directory `/cygdrive/c/dev/abidea/V8_TEST_VS5'


BUILD SUCCESSFUL (total time: 2s)

*Execution Output*
script.lua:16: /usr/lib/libctosapi.so: undefined symbol :
CTOS_PrinterPutString.

Regards,
Fran

-- 
You received this message because you are subscribed to the Google Groups 
"luvit" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to