본문 바로가기

디엘엘

(3)
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..
C++ 에서 만든 DLL 과 math 연동시 오류 : Invalid Floating Point Operation 어느 댓글을 남겨 주신 광란의사랑님 말씀대로 이때까지 해 보지 않았던 math 연동 DLL 을 테스트 해 보았습니다. 일단 델파이 에서는 표시 할 수 없는 -1.#INF 가 나오므로 FloatToStr() 함수를 거치면 NAN 으로 표시 됩니다. 그냥 만들게 되면 Invalid Floating Point Operation 오류 가 발생 하는데, 이는 Delphi 의 FPU monitor 플래그 때문에 발생 하는 문제 입니다. 이 문제는 다음 실제 사용된 코드와 같이 쓰시면 해결이 가능합니다. 아래에 예제 샘플을 추가 합니다. 사용된 툴은 CodeBlocks 와 minGW , 그리고 TurboDelphi Explorer(2006) 입니다. 압축을 풀면 CUSTMATH 디렉터리와 , DELPHI 가 각각 있..