为什么 sfml 在链接过程中给我未定义的“_imp____acrt_iob_func”引用

Why sfml gives me undefined reference to `_imp____acrt_iob_func' during linking

提问人:Mateus 提问时间:4/18/2023 最后编辑:Mateus 更新时间:4/22/2023 访问量:269

问:

我试图创建示例sfml窗口并使用cmake进行编译,但我收到以下错误:对“_imp____acrt_iob_func”的未定义引用。

我使用的唯一库是 sfml,我确定问题出在链接阶段。

我的 CMakeLists 文件如下:

cmake_minimum_required(VERSION 3.26.3)

project(LES)

set(SFML_DIR ${CMAKE_CURRENT_SOURCE_DIR}/sfmlLib/lib/cmake/SFML/)
set(SFML_STATIC_LIBRARIES TRUE)
message("SFML_DIR = " ${SFML_DIR})
find_package(SFML REQUIRED COMPONENTS graphics window system)

include_directories(include)
include_directories(sfmlLib/include)

add_executable(Pong src/main.cpp)

target_link_libraries(Pong sfml-graphics sfml-window sfml-system)

这些文件是: 文件树

我正在使用 ninja 编译和 sfml 用于 minGW 32 位

我收到的错误如下:

cmd.exe /C "cd . && W:\programming\MinGW\bin\c++.exe   CMakeFiles/Pong.dir/src/main.cpp.obj -o Pong.exe -Wl,--out-implib,libPong.dll.a -Wl,--major-image-version,0,--minor-image-version,0  "C:/Users/gcsil/OneDrive/Área de Trabalho/LeS/sfmlLib/lib/libsfml-graphics-s-d.a"  "C:/Users/gcsil/OneDrive/Área de Trabalho/LeS/sfmlLib/lib/libsfml-window-s-d.a"  "C:/Users/gcsil/OneDrive/Área de Trabalho/LeS/sfmlLib/lib/libsfml-system-s-d.a"  -lwinmm  -lgdi32  -lOpenGL32  "C:/Users/gcsil/OneDrive/Área de Trabalho/LeS/sfmlLib/lib/libfreetype.a"  -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 && cd ."
C:/Users/gcsil/OneDrive/┴rea de Trabalho/LeS/sfmlLib/lib/libsfml-system-s-d.a(Err.cpp.obj): In function `sync':
D:/Programming/C++/Releases/_Sources/SFML/src/SFML/System/Err.cpp:87: undefined reference to `_imp____acrt_iob_func'
collect2.exe: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
Windows CMake mingw SFML 未定义引用

评论

0赞 starball 4/18/2023
“_Why sfml 为我提供了对 include_directories(sfmlLib/include)' 的未定义引用,如果您和这些 SFML 目标设置正确。_imp____acrt_iob_func' during compilation_" isn't that a link error? Also, you probably don't need target_link_libraries
0赞 Monogeon 5/5/2023
当 sfml 的 dll 文件尚未复制到项目的构建目录时,通常会弹出 imp 错误

答: 暂无答案