【问题标题】:Cannot link against Lua 5.3.4 using CMake on Windows: Could NOT find Lua (missing: LUA_LIBRARIES) (found version "5.3.4")无法在 Windows 上使用 CMake 链接 Lua 5.3.4:找不到 Lua(缺少:LUA_LIBRARIES)(找到版本“5.3.4”)
【发布时间】:2018-10-15 08:37:13
【问题描述】:

我不明白如何使用 CMake (3.11) 在 Windows 上使用 VS 2017 定位 Lua 5.3.4 的动态版本。我设置了 CMAKE_PREFIX_PATH 以指向带有 include\lua.hlib\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
  • 没关系,这是错误的库类型。

标签: c++ lua cmake


【解决方案1】:

事实证明,我只需要 Lua 5.3.4 (lua53.lib) 的静态版本。将其放在前缀中可以检测到 Lua。对于 VS 2017,从 luabinaries 下载的相应下载地址是 lua-5.3.4_Win64_vc14_lib.zip

【讨论】:

    猜你喜欢
    • 2021-12-22
    • 1970-01-01
    • 1970-01-01
    • 2020-09-11
    • 2021-10-25
    • 1970-01-01
    • 1970-01-01
    • 2012-07-21
    • 2020-11-19
    相关资源
    最近更新 更多