본문 바로가기

운동하는 개발자/Windows

(44)
DLL Error "Expression: __acrt_first_block == header" 나의 상황은 DLL 프로젝트와 DLL을 명시적으로 링크하고 함수를 호출하는 간단한 MFC 기반 exe로 구성되어 있었다. 어느 순간부터인가 DLL의 함수를 호출하면 해당 함수가 종료 시 exception이 발생하여 "Expression: __acrt_first_block == header"이란 에러를 발생했다. 구글에 찾아보니 원인이 여러 개가 있는 듯했다. "주원인은 힙 메모리를 공용으로 사용하는 과정에서 메모리 해제 시 발생하는 문제" 이며 해결 상황은 여러 가지가 있었다. 1. DLL과 EXE의 MFC설정이 다른 경우 맞춰주기 DLL과 힙메모리를 같이 쓰는지 설정하는 값으로 맨뒤에 소문자 d는 디버그 모드이며 MT의 경우에는 MFC Static Library를 사용하는 것이고 MD의 경우에는 MFC..
WinInet httpsendrequest() 멈춤, 응답없음, 오류 기존의 exe로 된 프로세스를 DLL로 변환하는 작업 중 프로그램이 멈추는 현상이 확인되었다. 디버깅 결과 WinInet의 httpsendrequest() 함수에서 아무런 응답을 주지 않았다. https://learn.microsoft.com/ko-kr/windows/win32/api/wininet/nf-wininet-httpsendrequesta HttpSendRequestA 함수(wininet.h) - Win32 apps 지정된 요청을 HTTP 서버로 보내 호출자가 일반적으로 HttpSendRequestEx에 전달되는 것 이상으로 추가 데이터를 보낼 수 있도록 합니다. (ANSI) learn.microsoft.com 하다못해 에러라도 발생하면 오류코드 검색을 해 볼 텐데 아무런 응답 없이 멈춰만 있으..
UnhandledExceptionFilter() not work. 동작안함 (IDirect3D9) https://learn.microsoft.com/ko-kr/windows/win32/api/errhandlingapi/nf-errhandlingapi-unhandledexceptionfilter UnhandledExceptionFilter 함수(errhandlingapi.h) - Win32 apps 프로세스가 디버그되는 경우 처리되지 않은 예외를 디버거에 전달하는 애플리케이션 정의 함수입니다. learn.microsoft.com 위 함수가 내 PC에서 동작하지 않는 문제가 있었다. 분명 다른 테스트서버에서는 정상적으로 동작하였던 코드였고 수정된 내용도 없었다. 디버깅 중에는 원래 해당 함수가 적용되지 않기에 로그를 찍어가며 확인하는데 이상하게도 특정 로직 동작 이전까지는 정상적으로 작용했다. 그래서 범..
Git에서 WinMerge로 difftool 명령어 사용하기 과거 Winmerge를 사용해서 소스코드의 변화나 텍스트 문서의 비교를 하곤 했었다. Git설치 시 기본적인 diff명령어로는 너무 보기도 불편했고 수정은 더 불편했다. 찾아보니 winmerge를 사용해서 git difftool 명령어가 가능하다고 하였고 적용하였더니 너무 편해졌다. 그럼 설치방법! (Git은 이미 설치된 것으로 가정) 1. Winmerge 설치 https://winmerge.org/downloads/?lang=ko 위 공식홈피 링크에서 다운로드받아 설치한다 2. ".gitconfig" 파일 수정 이 파일은 git설치시 C:\User\[사용자명] 아래에 숨김파일로 존재한다 만약 파일이 없다면 Git 설치 후 아래 최초 설정을 하지 않은 경우이다 위 설정을 해주면 .gitconfig 파일이..
윈도우 유틸 파워토이(Power toys) 기능 소개 8. 텍스트 추출 종종 텍스트를 복사하고 싶은데 그것이 불가능할 때가 있다. 예를 들어 텍스트가 아니라 이미지 파일이라던가, 윈도우에서 뜬 오류창이라던가 하는 블록지정해서 텍스트 복사가 안 되는 상황들에서 OCR을 편하게 사용가능하다. (OCR 위키 링크 : https://ko.wikipedia.org/wiki/%EA%B4%91%ED%95%99_%EB%AC%B8%EC%9E%90_%EC%9D%B8%EC%8B%9D) 단축키는 여기서 확인이 가능하다. 위 이미지는 visual studio의 옵션 창인데 만약 저기 있는 텍스트 일부를 복사하고 싶다면 해당 단축키를 눌러서 블록지정을 해주고 메모장에 붙여 넣기를 해보면? 오타가 제법있긴하지만 상당수가 잘 읽혔다. 일반적인 폰트, 큰 글씨들이 더 잘 읽어진다. 이거라도 있는 게 어딘가
윈도우 유틸 파워토이(Power toys) 기능 소개 7. PowerRename 여러 개의 파일을 동시에 비슷한 포맷으로 rename 하고 싶은 경우가 있다 예를 들어 로그파일을 자동생성시켜서 다음과 같은 파일들이 있다고 보자 해당파일들을 다중선택 후 우클릭 PowerRename 클릭 아래 같은 새로운 창이 뜬다 이런 식으로 변경하고 싶은 특정 문구를 위에 쓰고 아래에도 쓰면 '이름 바꿈' 라인에서 어떻게 변경되는지 확인가능하다 그 외에도 다양한 규칙(시간, 일자, 카운트 등등)을 붙일 수 있는데 위에 동그라미에 i모양이 되어있는 것을 누르면 된다 라떼는... 메모장에 커맨드명령어 복붙복붙 해서.. 찾아 바꾸기 하고.. 일일이 적어서 배치로 돌리고 그랬었는데.. 끝..
윈도우 유틸 파워토이(Power toys) 기능 소개 6. 일반 텍스트로 붙여넣기 상당히 자주 사용하는 기능으로 웹 브라우저나 어디선가 글을 복사했을 때 텍스트의 내용뿐만 아니라 색상, 폰트, 사이즈까지 복사되는 경우가 자주 있다. 나는 매번 메모장에 붙여 넣기 한 뒤 메모장에서 다시 복사하여 사용하는 번거로움이 있었는데 이 기능으로 한방에 해결 가능!! 기존과 같이 컨트롤+C로 복사한 텍스트를 위 단축키로 붙여넣기하면 텍스트만 복사된다. 너무 편해서 눈물이...
윈도우 유틸 파워토이(Power toys) 기능 소개 5. 마우스 유틸리티 솔직히 거의 사용하지 않지만 MAC OS에서 봤던 기능이라 신기해서 소개한다 집 피시가 32인치 메인에 24인치를 세로로 서브로 사용 중인데도 필요한 기능은 아니다.. 메인기능은 마우스찾기! 컨트롤을 두 번 연속 누르면 위와 같이 마우스포인터의 위치를 알려준다. 끝...