gpt4 book ai didi

c++ - 如何让 luabind 在 ubuntu 中工作?

转载 作者:行者123 更新时间:2023-11-28 05:22:22 25 4
gpt4 key购买 nike

我一直在尝试 hello world Ubuntu 中 Luabind 的示例,但我无法使其工作。谁知道如何使用 g++ 使这个示例在 Ubuntu 中工作?

kuyu@castor-ub:~/dkuyu/Dropbox/practice/lua/luabind$ cat hellobind.cpp 
#include <iostream>
#include <luabind/luabind.hpp>

void greet()
{
std::cout << "hello world!\n";
}

extern "C" int init(lua_State* L)
{
using namespace luabind;

open(L);

module(L)
[
def("greet", &greet)
];

return 0;
}
kuyu@castor-ub:~/dkuyu/Dropbox/practice/lua/luabind$ g++ hellobind.cpp -I/usr/include/lua5.2/ -c -fPIC
kuyu@castor-ub:~/dkuyu/Dropbox/practice/lua/luabind$ g++ -shared -Wl,--whole-archive -o hellobind.so hellobind.o -lluabind -Wl,--no-whole-archive
kuyu@castor-ub:~/dkuyu/Dropbox/practice/lua/luabind$ cat test.lua
require 'hellobind'
greet()
kuyu@castor-ub:~/dkuyu/Dropbox/practice/lua/luabind$ lua test.lua
lua: error loading module 'hellobind' from file './hellobind.so':
./hellobind.so: undefined symbol: luaopen_hellobind
stack traceback:
[C]: in ?
[C]: in function 'require'
test.lua:3: in main chunk
[C]: in ?
kuyu@castor-ub:~/dkuyu/Dropbox/practice/lua/luabind$

当我运行 lua 脚本时,lua 提示“undefined symbol: luaopen_hellobind”。

我的系统详细信息如下:

kuyu@castor-ub:~/dkuyu/Dropbox/practice/lua/luabind$ dpkg --get-selections | grep -v deinstall | egrep 'lua|boost'
libboost-date-time1.54.0:amd64 install
libboost-dev install
libboost-system1.54.0:amd64 install
libboost1.54-dev install
libboost1.55-tools-dev install
liblua5.2-0:amd64 install
liblua5.2-dev:amd64 install
libluabind-dev install
libluabind-examples install
libluabind0.9.1 install
lua5.2 install
kuyu@castor-ub:~/dkuyu/Dropbox/practice/lua/luabind$ gcc --version
gcc (Ubuntu 4.8.5-2ubuntu1~14.04.1) 4.8.5
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

kuyu@castor-ub:~/dkuyu/Dropbox/practice/lua/luabind$ uname -a
Linux castor-ub 3.19.0-43-generic #49~14.04.1-Ubuntu SMP Thu Dec 31 15:44:49 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
kuyu@castor-ub:~/dkuyu/Dropbox/practice/lua/luabind$

最佳答案

我想你正在看这个例子here ,他们似乎以不同的方式加载共享库。试试这样的 lua 脚本:

package.loadlib('hellobind.so', 'init')()
greet()

关于c++ - 如何让 luabind 在 ubuntu 中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41207028/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com