Clion、CMake 对库中函数的未定义引用

Clion, CMake undefined reference to functions from libraries

提问人:Wizzy 提问时间:11/13/2023 最后编辑:Wizzy 更新时间:11/16/2023 访问量:76

问:

我正在尝试使用 CLion 在 Windows 上使用 assimp, 但是当我尝试使用提供的功能时,我遇到了

undefined reference to 'Assimp::Importer::ReadFile(char const*, unsigned int)'

错误。

我当前的 cmake.txt 链接库如下所示:

    find_package(assimp REQUIRED)

    target_link_libraries(${PROJECT_NAME} assimp::assimp)

assimp 软件包也是使用 CLion 的 vcpkg 安装的。
我尝试运行的 MinGW 版本是 6.0,但 11.0 也不起作用。

C++ CMake mingw Clion

评论

1赞 firmament 11/13/2023
您能否验证 find_library 的结果变量是否已填充?如果在 3.18 或更高版本上,您可以另外使用 REQUIRED 关键字。
0赞 Tsyvarev 11/13/2023
“我正在使用 CLion,但库和 .dll 都是使用 Visual Studio 构建的。这是个问题吗? - 如果在 Clion 中使用例如 MinGW 编译器,那么问题就来了:Visual Studio 库(库名称中关于组件的注释)不能用于 MinGW。vc143
1赞 Tsyvarev 11/13/2023
@firmament:如果找不到库,变量将包含 NOTFOUND。在这种情况下,使用 的 调用 将发出错误。ASSIMP_LIBRARYtarget_link_libraries${ASSIMP_LIBRARY}
0赞 Wizzy 11/13/2023
@Tsyvarev我已经尝试使用CLion的vcpkg,所以现在我使用并包含assimp::assimp库,但仍然有与以前相同的错误。所以我不认为这是 MinGW 编译器问题..?find_package(assimp REQUIRED)
0赞 Tsyvarev 11/13/2023
请使用您的新代码更新问题帖子。当前的一个有一点价值:它使用一个为 Visual Studio 构建的库,带有 gcc 编译器。

答:

0赞 Wizzy 11/14/2023 #1

因此,经过大约一天的摆弄,我发现 assimp(可能)不支持 Windows 上的 mingw。

裁判:

“修复”:

最后,我将编译器从 MinGW 更改为 VS2022 (visual studio 2022)。

谢谢大家的帮助!

编辑: 从一位朋友告诉我的情况来看,他是在用 clang 构建后让它与 MinGW 一起工作的。