본문 바로가기

minGW

(27)
Visual Studio 에서 import 한 프로젝트를 Code Blocks (gcc/minGW) 에서 빌드 실패 할때. 정말 많은 이유로 Visual Studio 를 싫어 하는 이유중, 그중 하나가 바로 위 이미지처럼 나오는 뭔가의 DLL 이 없어서 오류가 나는 경우 입니다. 멍청한 M$놈들이 지들이 만든 DLL 의 참조 오류가 많아지자, manifest 개념을 도입해서 DLL 특정 위치 해결 점을 어찌저찌 해 보고자 해 놓고선, 컴파일러 자체가 Visual Studio 에서 개발에서 쓰는 DLL 이 없으면 표준 WindowsAPI 로 도는 프로그램이 돌지도 못하게 해 놓은 것이죠. M$ 개발자들이 편하니, 사용자가 되는 VS 개발자가 개노가다 해야 하는 겁니다. 참으로 븅신같은 현상이 아닐수가 없죠. 분명히 프로젝트를 표준 Windows API 만을 사용하는 프로젝트로 만들어도, 저놈의 알수도 없는 DLL 참조 오류는 ..
DICOM tag reader/writer ... 그냥 내가 만들어 쓴다 -> 만들었다. 인터넷을 아무리 뒤져도 ... 그놈의 DCM 파일 읽고 쓰는 라이브러리 만 구하려니 .. 다 상용에다 쓰기도 빡센 이상한 애들 뿐. 그래서 회사에서 팀장님이 구해 준 C# 소스를 주워다 보고 C++ 로 그냥 새로 만들었다. (아 ... C# 으로 만들면 정말 얼마나 낭비가 심한지 다시금 깨닫게 되는 계기가 되기도 ... ) Tag 를 Element 단위로 읽어 들이고 써 주기 때문에 필요한 것 만 수정해서 다시 DCM 으로 만들수 있다. minGW 를 이용해서 만들어 진 상태이며, 코드상에 포인터 계산이나 이런 부분이 모두 integer-safe 코드 이므로 32bit/64bit 모두 사용이 가능하며, little-endian 및 big-endian 모두 사용이 가능하다. 아직은 처음 버젼이라 JPEG,..
imebra 의 minGW 32bit pre-compiled library Free BSD project 중 쓸만한 DICOM read/write 라이브러리인 imebra 의 minGW 32bit 용 library 와 header, test code set 입니다. 2011년 4월 18일 밤 10시 48분 29초 빌드 소스를 이용해서 만들었습니다. imebra 공식 홈페이지 : http://imebra.com/ imebra Doxygen 홈페이지 : http://imebra.com/documentation/2011/html/main.html 사용법은 압축을 풀면 examples, include, lib, tests 폴더가 나옵니다. 이중 tests 는 QT lib 이 있어야 구동이 되는 것 이니 참조만 하시고, include 는 lib 에 있는 a 파일을 쓰기 위한 header..
WxWidget(v2.8.12) 와 CodeBlocks 연동 하기. 일단 이 글은 CodeBlocks 가 뭔지 알고, WxWidget 이 대충 뭔지는 아는 사람에게 유용한 글임을 먼저 밝히는 바 입니다. 사실 CodeBlocks 만 알고, WxWidget 을 모르는 경우가 더 맞는 말 이겠네요. 먼저, 프로젝트 생성시 WxWidget 이 기본으로 설정 안된 상태에서 다음과 같은 것이 뜹니다. Wx 의 환경변수를 맞춰 달라는 말 입니다. "멍-" 해 지죠. 이제 해야 할 것은 먼저 WxWidget 소스를 받아 오는 것 입니다. 2011년6월20일 기준, 마지막 릴리즈 버젼이 2.8.12 이니, 다음 위치에서 WxWidgets-2.8.12.zip 을 받습니다. (저는 WxX11 을 받았는데, 컴파일이 되더군요 .... 용량 차이가 조금 있던데 ..) 다음으로 해야 하는 것인..
MinGW 환경 C++ 에서 Thread 간편히 쓰기 위한 CustomThread 클래스! MinGW 으로 C++ 컴파일 해서 쓸시 , thread 처리를 위해 extern"C" 남발을 했던 기억이 있습니다. 아련한 기억인데 .. C++ 로 class 객체화를 하는데 있어 , thread 의 stdcall 함수 제작은 귀찮음의 걸림돌이 되었다고 생각 됩니다. 그래서 만들었던 것이 바로 이 CustomThread !!! 클래스 원형을 보면 다음과 같습니다. 그리고 실제 사용하는 입장에선 위의 클래스를 상속 받아, Setup 과 Execute(void*) 를 구현해 주면 되는 것 입니다. 예) 예제 소스는 CodeBlocks 로 만들어 졌습니다. 첨부 파일의 소스를 사용할 수 있으니 필요하신 분은 사용해 보시기 바랍니다. 본 소스는 공개로 만든 것 이므로 ,이 코드로 인해 발생하는 문제점은 제가 ..
DLL 에서 dllmain 이 호출 되지 않는다 !!! 언젠가 부터, 저는 DLL 을 minGW 에서 만듭니다. 하나의 소스로 Target 만 바꿔서 32bit, 64bit 모두 찍어 낼 수 있도록 환경을 만들어 쓰다 보니 이게 너무 편했던 것이죠. 그런데, 어느순간 제가 "정석" 을 따르고 있지 않음을 깨닫게 됩니다. 그 일이 이번에 DllMain() 함수가 불리지 않는다는 것. 이전에 C 코드를 짤떈 잘 쓰이던 것이 왜 이번에 이러지? 라는 의문이 든 것이 바로 이 결과 때문 입니다. 위 이미지만 봐서는 뭐가 문제인지 모를 것 입니다만 .. 아래 코드를 보겠습니다. 중요한 것은 바로 DllMain() 함수가 불리지 않는 다는것. 중복된 프로세스에서 사용되거나, 쓰레드에 사용될 경우 기본적인 처리를 해 줘야 할 DllMain() 이 호출 없이 사용된다는 점..
minGW x86-64bit, DLL 빌드시 libc++ 문제 해결. 현재, 일반적으로 사용할 수 있는 컴파일러 중 64bit Win32.PE 를 생성 할 수 있는 것은 minGW 말고는 없는 걸로 알고 있습니다. 상용 컴파일러 로는 뭐가 있는지 알수 없기 때문이기도 합니다만 -_-;; intel 같은데서 나오는 컴파일러는 64bit 를 지원 하겠죠. 하지만 범용적으로 쓰기엔 어려움이 있으므로, 저는 gcc 의 windows 판인 minGW 를 사용합니다. 릴리즈 버젼 4.5.5 를 현재 사용하고 있으며, OpenSource 로서 SourceForge 에서 개인 릴리즈 버젼으로 다운로드 받을 수 있습니다. 언제나 그렇듯 ... minGW 는 상용 컴파일러가 아니므로, 해당 컴파일러로 만들어진 바이너리가 오동작 해도 그에 대한 warranty 는 전혀 없습니다! 현재 64b..
CodeBlocks 에 minGW w64 컴파일러 붙이기. 대부분 숙련된 개발자가 아니고서는 CodeBlocks 니 minGW 니 하는게 뭔소린지 모르는게 당연합니다. 하지만 좀 더 개발에 임하고 컴파일러가 뭔가를 깨닫기 시작하면 컴파일러의 소중함과 개발 환경의 중요성과 그에 따른 필요성 등을 깨닫게 되겠죠. 하지만 세상에 그런걸 혼자 알아서 다 하는 사람이 얼마나 있을까요? (저라면 귀찮아서 안할지도 ... ) 그래서 저 하나 고생해서 소소한 도움이 되고자 CodeBlocks 와 minGW 64 를 함께 붙이는 작업을 그림과 함께 소개해 보고자 합니다. CodeBlocks 의 경우 기본적으로 32ibt minGW (버젼 3 대) 를 포함하고 있는 패키지가 있습니다. 하지만 64bit 를 포함하는 것은 없죠 . 즉, 64bit minGW 를 붙이려면 직접 사용자..