>

수정 :Windows에서 MinGW-x86_64를 사용하고 있습니다

cmake로 gtk + 3 c 프로젝트를 컴파일하려고 할 때, 로그에이 오류 메시지가 나타납니다 :

"C:\Program Files\JetBrains\CLion 2017.1.3\bin\cmake\bin\cmake.exe" --build C:\Users\Jonas\ClionProjects\tutorial\cmake-build-debug --target tutorial -- -j 4
[ 50%] Linking C executable tutorial.exe
c:/mingw/bin/../lib/gcc/mingw32/4.9.3/../../../../mingw32/bin/ld.exe: cannot find -ldwmapi
collect2.exe: error: ld returned 1 exit status
CMakeFiles\tutorial.dir\build.make:96: recipe for target 'tutorial.exe' failed
mingw32-make.exe[3]: *** [tutorial.exe] Error 1
mingw32-make.exe[2]: *** [CMakeFiles/tutorial.dir/all] Error 2
CMakeFiles\Makefile2:66: recipe for target 'CMakeFiles/tutorial.dir/all' failed
CMakeFiles\Makefile2:78: recipe for target 'CMakeFiles/tutorial.dir/rule' failed
mingw32-make.exe[1]: *** [CMakeFiles/tutorial.dir/rule] Error 2
mingw32-make.exe: *** [tutorial] Error 2
Makefile:117: recipe for target 'tutorial' failed

이것은 내 CMakeLists.txt입니다. 거기에 gtk3와 그 라이브러리를 추가했지만, Im을 컴파일하려고 할 때 이전에 언급 된 오류가 있습니다.

cmake_minimum_required(VERSION 3.7)
project(tutorial)
set(CMAKE_C_STANDARD 99)
set(SOURCE_FILES main.c)
set(PKG_CONFIG_EXECUTABLE "C:/msys64/mingw64/bin/pkg-config.exe")
FIND_PACKAGE(PkgConfig REQUIRED)
PKG_CHECK_MODULES(GTK3 REQUIRED gtk+-3.0)
INCLUDE_DIRECTORIES(${GTK3_INCLUDE_DIRS})
LINK_DIRECTORIES(${GTK3_LIBRARY_DIRS})
add_executable(tutorial ${SOURCE_FILES})
ADD_DEFINITIONS(${GTK3_CFLAGS_OTHER})
TARGET_LINK_LIBRARIES(tutorial ${GTK3_LIBRARIES})


  • 답변 # 1

    dwmapi.dll은 Vista에만 제공됩니다. 그래서 gtk + -3.0 패키지의 버그라고 생각합니다. 그리고 -ldwmapi  OS에는 필요하지 않습니다. 아래는이 문제를 해결하는 해결 방법입니다. 이것이 귀하의 문제를 해결할 것이라고 확신하지 않습니다. 이것은 자기 책임입니다.

    <올>

    C:\msys64\mingw64\lib\pkgconfig 에서 gdk-3.0.pc, gdk-broadway-3.0.pc, gdk-win32-3.0.pc의 백업 사본 만들기

    vim에서 해당 파일을 열고 -ldwmapi 를 제거하십시오.  그리고 :wq

    업데이트

    libdwmapi.a를 만들어 보자

    <올>

    여기에서 def 파일 다운로드

    dlltool -d dwmapi.def -l libdwmapi.a

관련 자료

  • 이전 javascript - API 응답 후 반응 구성 요소 렌더링
  • 다음 스프링 부트가 작동하지 않는 벤치 마크 테스트 (JMH)