qt linux -> window conversion

Cute_Security15·2025년 6월 17일
0

window dev

목록 보기
5/6

상황

linux 에서 작성한 비정형 알고리즘 poc 프로그램이 있다.

qt creator 에서 작성했으며, pcl 라이브러리를 이용해 다음 동작을 수행한다.

  • point cloud (ply) 에서 바닥 노이즈를 제거
  • euclidean distance base 로 점 cluster 를 구성
  • convex hull mesh 와 이를 감싸는 박스를 그린다.
  • 박스의 가로 세로 높이를 출력한다.

이 프로그램을 window 로 가져와서, 알고리즘을 개선하는 test 프로그램으로 사용하려고 한다.

확인한 내용

qt creator kit 변경

qt creator 는 기본 설치시 mingw qt 를 설치하게 된다. pcl 라이브러리는
.lib 이므로 msvc 로 변경해야 한다.

tools - qt maintenance tool - start maintenance tool 에서 현재 설치된
qt 버전의 msvc 를 설치한다.

이후 qt creator 를 재실행하고, projects - kits 에서 kit 를 msvc 로 변경한다.

빌드 타입에 따른 비정상 동작

.lib 는 release 용 라이브러리와 debug 용 라이브러리가 분리되어 있다.

따라서 빌드 타입에 따라서, 어떤 경우엔 정상적으로 동작하고, 어떤 경우엔
비정상적으로 동작할수 있다.

  • 빌드 타입은 project - Build Settings 에서 변경가능하다

<CONFIG:Release>: 와 <CONFIG:Debug>: 를 사용하여 빌드 타입별로
다른 .lib 를 링크하게 작성한다.

msvc 에서는 link_directory 가 비정상 동작한다는 이야기가 있다.

실제로 link_directory 를 쓰고 target_link_libraries 를 쓰면, 제대로 라이브러리가
링크되지 않는걸 확인했다.

따라서, target_link_libraries 에 절대경로를 넣어서 링크한다.

NOMINMAX 추가

windows.h 에는 min, max 매크로가 정의되어 있는데, 이 매크로가 std::min,
std::max 매크로와 충돌할수 있다.

따라서 windows.h 위에 #define NOMINMAX 를 추가하면, 충돌을 방지할수 있다.

_getcwd() 추가

linux 에서는 getcwd 를 사용하나, window 에서는 _getcwd 를 사용할것을
권고하고 있다.

dll 추가

window 에서는 링크할때 .lib 를 쓰고, 실행할때 .dll 이 필요하다.

현재 프로그램에서는 OpenNI2 의 dll 이 필요하므로, dll 위치를 path 에 추가한다.
project - build environment 에서 path 변수를 클릭하고 edit 버튼을 클릭하면 된다.

cdb 설치

msvc 로 만든 바이너리를 디버깅 하려면 cdb 가 필요하다.
cdb 는 windows sdk 에서 설치할수 있다.

cdb 설치 이후 qt creator 버전에 맞는 cdb support plugin 을 설치하고,
qt creator 를 재부팅하면, cdb 가 auto detect 된걸 확인할수 있다.

만일, 다른 qt creator 용 plugin 을 설치하면, 디버깅시
Internal error ... qtcreatorcdbext.dll cannot be found 팝업이 뜬다.

이후 cdb 를 선택하면 정상적으로 디버깅 되는걸 확인할수 있다.

프로그램 실행확인

git

qt creator 에서 CMakeLists.txt 를 open 하면, configure project 메뉴가 확인된다.
msvc kit 를 사용해서 configure 하면, project 사용이 가능하다.

실행 전에는, "dll 추가" 항목에서 설명한것처럼, openNI2 dll 경로를 path 에 추가해줘야 한다.

https://gitlab.com/feather973/window_vdc_qt_app

profile
관심분야 : Filesystem, Data structure, user/kernel IPC

1개의 댓글

comment-user-thumbnail
2025년 7월 2일

qt creator 주요 단축키들

find refereces to a symbol
ctrl + shift + u

definition
f2

back
alt + <-

split
ctrl + e, 0 : close

ctrl + e, 2 : vertical
ctrl + e, 3 : horizontal

ctrl + e, i : previous window
ctrl + e, o : next window

ctrl + f3 : find and rotate
shift + ctrl + f3 : reverse

실행
ctrl + r

답글 달기