Lua 库没有链接
Lua library doesn't linking
当我尝试执行以下代码时得到 undefined reference to 'luaL_openlibs'
extern "C"
{
#include "../lib/lua.h"
#include "../lib/lualib.h"
#include "../lib/lauxlib.h"
}
int main(int argc, char *argv[])
{
lua_State *L = luaL_newstate();
luaL_openlibs(L);
return 0;
}
这是我的 VSCode 任务文件:
{
"tasks": [
{
"type": "shell",
"label": "C/C++: g++.exe build active file",
"command": "C:/MinGW/bin/g++.exe",
"args": [
"-g",
"${workspaceFolder}\src\**.cpp",
"-L",
"${workspaceFolder}\lib",
"-o",
"${workspaceFolder}\debug\game.exe",
"-llua54"
],
"options": {
"cwd": "C:/MinGW/bin"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
}
}
],
"version": "2.0.0"
}
这些是我的文件
.
├── .vscode
│ ├── c_cpp_properties.json
│ └── launch.json
│ └── settings.json
│ └── tasks.json
├── debug
├── lib
│ ├── lauxlib.h
│ └── lua.h
│ └── lua.hpp
│ └── luaconf.h
│ └── lualib.h
│ └── liblua54.dll
│ └── liblua54.a
├── src
│ ├── main.cpp
如我所见,我为编译器指定了所有必要的参数。我完全是链接库的初学者,我不知道我错过了什么。
我也尝试将 liblua54.a 和 liblua54.dll 移动到调试文件夹,但没有帮助。
我希望将以下内容添加到上面的 args
中会有所帮助:
...
"${workspaceFolder}\lua",
"-l",
"-llua56",
"-o",
...
您混淆了 32 位和 64 位。如果您的 gcc 构建 32 位可执行文件,那么您需要使用来自 http://luabinaries.sourceforge.net/download.html 的 32 位二进制文件,而不是 64 位二进制文件。当我故意混淆这些时,我得到了你得到的确切错误,当我使用正确的错误时,它编译得很好。
当我尝试执行以下代码时得到 undefined reference to 'luaL_openlibs'
extern "C"
{
#include "../lib/lua.h"
#include "../lib/lualib.h"
#include "../lib/lauxlib.h"
}
int main(int argc, char *argv[])
{
lua_State *L = luaL_newstate();
luaL_openlibs(L);
return 0;
}
这是我的 VSCode 任务文件:
{
"tasks": [
{
"type": "shell",
"label": "C/C++: g++.exe build active file",
"command": "C:/MinGW/bin/g++.exe",
"args": [
"-g",
"${workspaceFolder}\src\**.cpp",
"-L",
"${workspaceFolder}\lib",
"-o",
"${workspaceFolder}\debug\game.exe",
"-llua54"
],
"options": {
"cwd": "C:/MinGW/bin"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
}
}
],
"version": "2.0.0"
}
这些是我的文件
.
├── .vscode
│ ├── c_cpp_properties.json
│ └── launch.json
│ └── settings.json
│ └── tasks.json
├── debug
├── lib
│ ├── lauxlib.h
│ └── lua.h
│ └── lua.hpp
│ └── luaconf.h
│ └── lualib.h
│ └── liblua54.dll
│ └── liblua54.a
├── src
│ ├── main.cpp
如我所见,我为编译器指定了所有必要的参数。我完全是链接库的初学者,我不知道我错过了什么。
我也尝试将 liblua54.a 和 liblua54.dll 移动到调试文件夹,但没有帮助。
我希望将以下内容添加到上面的 args
中会有所帮助:
...
"${workspaceFolder}\lua",
"-l",
"-llua56",
"-o",
...
您混淆了 32 位和 64 位。如果您的 gcc 构建 32 位可执行文件,那么您需要使用来自 http://luabinaries.sourceforge.net/download.html 的 32 位二进制文件,而不是 64 位二进制文件。当我故意混淆这些时,我得到了你得到的确切错误,当我使用正确的错误时,它编译得很好。