【发布时间】:2021-07-10 18:09:30
【问题描述】:
我正在尝试使用 CLion IDE 和 CMake 使用嵌入在 C 中的 Lua,但我遇到了链接器错误。
运行这个程序时,我得到undefined symbol: _luaL_newstate:
#include "lua.h"
#include "lauxlib.h"
#include "lualib.h"
int main()
{
lua_State *L = luaL_newstate();
return 0;
}
这是我的 CMake 文件,它使用 CMake 内置的 FindLua.cmake 来查找包。我正在使用 CMake 选项-DCMAKE_CXX_FLAGS="-Wall -Wextra" -DCMAKE_C_FLAGS="-Wall -Wextra"。
编辑:失败的 CMake 生成的链接器命令是 lld-link.exe /nologo @CMakeFiles\LuaProjk.dir\objects1.rsp /out:C:\Users\b\CLionProjects\LuaProjk\bin\LuaProjk.exe /implib:LuaProjk.lib /pdb:C:\Users\b\CLionProjects\LuaProjk\bin\LuaProjk.pdb /version:0.0 /machine:X86 /debug /INCREMENTAL /subsystem:console C:\Lua\lua54.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST /MANIFESTFILE:CMakeFiles\LuaProjk.dir/intermediate.manifest CMakeFiles\LuaProjk.dir/manifest.res
cmake_minimum_required(VERSION 3.17)
project(LuaProjk C)
set(LUA_DIR /Lua)
set(LUA_INCLUDE_DIR /Lua/include)
find_package(Lua REQUIRED)
include_directories(${LUA_INCLUDE_DIR})
set(CMAKE_C_STANDARD 11)
set(SOURCE_FILES main.c)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ../../bin)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ../../lib)
add_executable(LuaProjk ${SOURCE_FILES})
target_link_libraries(LuaProjk ${LUA_LIBRARIES})
Lua 目录包含 lua54.dll 和 lua54.lib 文件,以及包含所有头文件的 include 目录。
我错过了什么吗?感谢您的帮助!
【问题讨论】: