C/C ++ Lua Embedded: отсутствует символ при требовании собственной библиотекиC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 C/C ++ Lua Embedded: отсутствует символ при требовании собственной библиотеки

Сообщение Anonymous »

Я пытаюсь внедрить Lua (используя minilua.h) в свой проект. Чистые сценарии LUA работают, но все, что требует нативных библиотек, не снимается, заявляя, что NM .
не так, как это не так. это. < /p>
В конечном итоге я хочу создать пользовательскую среду выполнения Lua, в котором также может использовать нативные библиотеки Lua, но с одним двоичным.#include

#define LUA_IMPL
#include "lua/minilua.h"

using std::string;

class Lua {
public:
lua_State *L;

Lua() {
L = luaL_newstate();
luaL_openlibs(L);
}

~Lua() { lua_close(L); }

void run(string s) {
luaL_loadstring(L, s.c_str());

lua_call(L, 0, 0);
}
};

int main(int argc, char *argv[]) {
// Works
Lua().run("print('hello world')");

// Barfs error
Lua().run(R"(
package.path = "./lualib/?.lua;./lualib/?/init.lua;" .. package.path
package.cpath = "./lualib/?.so;./lualib/?/init.so;" .. package.path

local pegasus = require 'pegasus'

local server = pegasus:new({
port = '8080',
location = '.',
})

server:start(function(req, res)
print('started')

res:addHeader('Cache-Control', 'no-cache')
:write("hello world")
end)
)");
}
< /code>
Создать и запустить и получить ошибку < /p>
~/code/cpp/luastuff g++ -I./lib main.cpp -o game && ./game
hello world PANIC: unprotected error in call to Lua API (error loading module 'socket.core' from file './lualib/socket/core.so':
dlopen failed: cannot locate symbol "lua_type" referenced by "/data/data/com.termux/files/home/code/cpp/luastuff/lualib/socket/core.so"...) Aborted
< /code>
Ищу символ < /p>
~/code/cpp/luastuff nm game | grep lua_type
00000000000360e0 T lua_type
0000000000036164 T lua_typename


Подробнее здесь: https://stackoverflow.com/questions/796 ... ve-library
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»