【发布时间】:2018-10-15 08:37:13
【问题描述】:
我不明白如何使用 CMake (3.11) 在 Windows 上使用 VS 2017 定位 Lua 5.3.4 的动态版本。我设置了 CMAKE_PREFIX_PATH 以指向带有 include\lua.h 和 lib\lua53.dll 的目录.这些是CMakeLists.txt 中的相关行:
if(NOT DEFINED LUA_INCLUDE_DIR OR NOT DEFINED LUA_LIBRARIES)
find_package(lua REQUIRED)
endif()
include_directories(${LUA_INCLUDE_DIR})
target_link_libraries(${PROJECT_NAME} ${LUA_LIBRARIES})
当尝试运行 cmake . -G "Visual Studio 15 2017 Win64" 时出现此错误:
Could NOT find Lua (missing: LUA_LIBRARIES) (found version "5.3.4")
脚本说在我给它的路径中找到了库版本,但没有找到名为lua53.dll的库文件。查看FindLua.cmake 的来源,似乎这将匹配主要和次要版本的名称匹配器之一。
set(_lua_library_names
lua${LUA_VERSION_MAJOR}${LUA_VERSION_MINOR}
lua${LUA_VERSION_MAJOR}.${LUA_VERSION_MINOR}
lua-${LUA_VERSION_MAJOR}.${LUA_VERSION_MINOR}
lua.${LUA_VERSION_MAJOR}.${LUA_VERSION_MINOR}
)
可能是什么问题?
【问题讨论】:
-
CMake 需要
.lib文件,其中包含符号列表,由.dll文件导出。链接需要这个文件(不是.dll一个)。确保你有 Lua 的.lib文件。 -
试过了,它最终找到了库,但现在我收到各种错误,抱怨链接时未解决的外部问题,如
error LNK2001: unresolved external symbol lua_toboolean。 -
没关系,这是错误的库类型。