luaコードをC++に埋め込もうとしていますが、奇妙なコンパイラエラーが発生します。これが私のコードです:
#include <stdio.h>
extern "C" {
#include <lua.h>
#include <lauxlib.h>
#include <lualib.h>
}
int main() {
lua_State *luaVM = luaL_newstate();
if (luaVM == NULL) {
printf("Error initializing lua!\n");
return -1;
}
luaL_openlibs(luaVM);
luaL_dofile(luaVM, "test.lua");
lua_close(luaVM);
return 0;
}
コンパイル:
g++ -Wall -o embed -llua embed.cpp
エラーは次のとおりです。
g++ -Wall -o embed -llua embed.cpp
/tmp/ccMGuzal.o: In function `main':
embed.cpp:(.text+0x47): undefined reference to `luaL_loadfilex'
embed.cpp:(.text+0x72): undefined reference to `lua_pcallk'
collect2: error: ld returned 1 exit status
私は自分のコードを呼び出したり、自分のコードから呼び出しluaL_loadfilex
たりしていませんlua_pcallk
。これは、問題が自分のコードではなく、lua自体にあるという仮定に役立ちます。誰かがここで何かアイデアを持っていますか?
アップデート
これが私のバージョン情報です:
$ lua -v
Lua 5.2.0 Copyright (C) 1994-2011 Lua.org, PUC-Rio