운동하는 개발자 (191) 썸네일형 리스트형 LNK2038: mismatch detected for ‘_ITERATOR_DEBUG_LEVEL': value ‘0’ doesn’t match value ‘2’ Visual studio를 사용하여 컴파일을 하다 다음과 같은 메세지를 접하게 되었다 찾아보니 참조하는 lib은 릴리즈로 빌드되어 있는데 메인 프로젝트인 exe는 debug로 빌드하려고 하면 발생한다고 한다 외부에서 가져온 lib이라면 디버그 혹은 릴리즈에 맞는 파일을 가져와서 추가하여 빌드해 주면 해결된다 https://learn.microsoft.com/en-us/cpp/standard-library/iterator-debug-level?view=msvc-170&redirectedfrom=MSDN _ITERATOR_DEBUG_LEVEL Learn more about: _ITERATOR_DEBUG_LEVEL learn.microsoft.com 나의 경우엔 한 솔루션 내에 여러 개의 프로젝트가 존재했는데.. CString to char* (UTF8) MFC의 CString을 사용하다가 서드파티 라이브러리라던가 Winapi를 사용하며 char*로 변환해야 하는 일들이 있다 이때 한글이 들어가 있다면 (char*)(LPCTSTR) 이런 강제 형변환으론 정상적으로 한글이 전달되지 않는다 대부분의 WinApi나 서드파티 라이브러리들은 UTF8을 지원하기에 이로 변환해줘야 한다 (물론 visual studio에서 디버깅하면 한글이 보이진 않는다) CString tempPath = L"c:\user\홍길동\temp"; char* transStr = CW2A(tempPath, CP_UTF8); 파일서버(스토리지서버) HTTP통신 파일 다운로드 스트레스 테스트 (JMeter) / fileserver stress test 파일서버가 어느 정도의 트래픽과 I/O를 버텨낼 수 있을지 스트레스 테스트가 필요하였다 여러 유틸이 있었는데 JMeter를 사용해 보았다 우선 JAVA8 이상의 버전 설치와 "JAVA_HOME" 이름으로 환경변수 등록이 필요하다 환경변수 등록은 아래로 2022.12.15 - [운동하는 개발자/Windows] - windows 10, 11 환경 변수 등록(adb.exe 환경 변수 등록하기) windows 10, 11 환경 변수 등록(adb.exe 환경 변수 등록하기) 커맨드 명령어로 실행되는 것들은 꼭 그 exe의 해당경로를 찾아가기 번거로운것들이 많다 환경변수에 등록해두면 어느 경로에서든 실행 할 수 있어 편하다 이번엔 Android Debug Bridge인 adb를 등록해 singo112ok.tisto.. 커맨드 명령어로 파일 해시 추출하기 (파일이 동일 한지 확인 방법) 파일이 동일한 파일인지 확인하기 위해 주로 해시값을 비교해본다 OpenSSL 같은 라이브러리를 사용해서 추출할 수 있으나 윈도우의 경우 기본 유틸로 간단하게 확인이 가능하다 사용법은 커맨드를 실행하여 CertUtil 명령을 사용하면 된다 certutil -hashfile [filename] MD5 certutil -hashfile [filename] SHA256 적용예시) C++의 라이브러리인 boost인 경우 위 사진과 같이 SHA256 Hash를 제공한다 (다른 사이트에서도 종종 Hash를 제공한다 파일변조를 검사할 수 있다) 해당 boost_18_0.zip을 다운로드한 뒤 해시를 추출해 보았다 위 해시와 정확히 일치하고 변조되지 않은 정상 파일인 것이 확인 가능하다 boost::log 링크 에러 error LNK2038: mismatch detected for 'boost_log_abi': value 'v2s_mt_nt62' doesn't match value 'v2s_mt_nt6' in checklist.obj boost::log 사용 중 잘 작동하던 코드에서 기능을 추가하다 보니 갑자기 링크에러가 발생했다 1>utils.obj : error LNK2038: mismatch detected for 'boost_log_abi': value 'v2s_mt_nt62' doesn't match value 'v2s_mt_nt6' in checklist.obj 1>utils.obj : error LNK2019: unresolved external symbol "public: __thiscall boost::log::v2s_mt_nt62::attribute_set::attribute_set(void)" (??0attribute_set@v2s_mt_nt62@log@boost@@QAE@XZ) referenced in funct.. signtool error: The provided cross certificate would not be present in the certificate chain. 최근 받은 전달받은 사인키를 이용하여 exe파일을 사인해보려 했는데 다음과 같은 오류가 발생했다 분명 사인프로그램도 설치되어 있고 인증 USB도 꽂혀있었는데.. 번역해 보면 "제공된 교차 인증서는 인증서 체인에 존재하지 않습니다." ???????? 찾아보니 해당 인증서가 내 피시에 저장되지 않았기 때문이었다 해결책으로는 아래와 같다 1. [인증서].cer 파일을 더블클릭해서 열어주고 "인증서 설치" 클릭 2. 저장소 위치 선정, 멀티유저가 아닌 이상 별 차이는 없을 테나 나는 "로컬 컴퓨터" 선택 후 다음 3. "모든 인증서를 다음 저장소에 저장" 선택 후 찾아보기 -> 신뢰할 수 있는 루트 인증기관 확인 -> 다음 4. 다시 signtool을 사용해 보면 정상적으로 exe파일에 사인이 완료되었다 * 검.. cmake로 windows 파일 속성(버전) 입력하기 시작 전에.. CMAKE는 주로 크로스 컴파일 환경이기에 윈도우에 파일속성에서 보이는 파일버전을 신경 쓰지 않았다가 필요에 의해 찾아보니 은근 정보 찾기가 힘들었다 1. cmake로 빌드할 프로젝트가 있는 경로에 version.rc.in파일을 생성한다 2. 파일에 아래 내용을 붙여 넣는다 #include "Windows.h" /* CMakeLists.txt 에서 선언할 변수 MY_PRODUCT_NUMBER, MY_PRODUCT_VERSION, MY_BUILD_NUMBER */ #define VER_FILEVERSION @MY_PRODUCT_NUMBER@,@MY_PRODUCT_VERSION@,@MY_BUILD_NUMBER@,0 #define VER_FILEVERSION_STR "@MY_PRODUCT_NUM.. 윈도우 텍스트 파일 내용으로 검색 하는 법 예를 들어 위와 같이 로그파일이 모여있거나 텍스트파일이 모여있을 때 파일명이 아니라 파일 본문 내용으로 검색하고 싶은 경우가 있다 이때는 해당 경로에서 터미널(cmd, terminal, powershell 다 가능)을 연다 findstr /S "내용" *.* 이런 식으로 start라는 내용이 있는 log확장자의 파일을 모두 검색하면 이렇게 파일명과 그 라인의 내용이 출력된다 굳이 내용까지 안 보고 파일명만 찾고 싶다면 /M 명령어를 추가하면 된다 ※ 추가로 결과를 파일로 저장할 수 있다 findstr /sm start > result.txt 이렇게 하면 커맨드 실행경로에 result.txt라는 파일명에 결과가 저장된다 더 많은 파라미터 값들은 공식페이지를 찾아보자 https://learn.microsof.. 이전 1 ··· 5 6 7 8 9 10 11 ··· 24 다음