본문 바로가기

Developement

(142)
배포된 프로그램에 대한 개발자적인 생각. 내가 프로그래밍을 해 온것으로만 따지면 허접하지만 꽤 오랜 시간 해 온 듯 하다. 처음 프로그래밍을 시작 한 것은 초등학교 때 부터 관심을 가져 중학교 때 부터 시작한 듯 하다. (한 개발자의 잡설을 읽으시려면 펼쳐 보시길..) 그당시에 초등학교는 재단이 참 부자회사 였던지라 집에도 없는 Apple Macintosh IIe 가 학교 전산실에 있었다. (물론 내가 초등학교 다닐시엔 우린 국민학교라 했다.) 그당시 내장 BASIC 으로 프로그래밍을 하는 것을 보고, 화면에 웃는 얼굴을 그리는 것을 보고 신기해 했었던 기억이 난다. 지금 생각하면 Move, Line 이 두가지를 가지고 그린 것 임을 생각해 보지만 ... 중학교에 들어서면서 부터 Apple 에서 MS-DOS 로 넘어 가게 되었다. 그때 부터 집..
Pentax DSLR 컨트롤 프로그램 제작 재시작. 한동안 잊고 있었던 Pentax Camera Debugging 툴을 다시 만들기로 했습니다. 이유는 제 K10D 가 AS 센터 갔다 온 뒤로 이상하게 포커스가 뒤로 밀리는 듯 했더만 .. 역시나 - AF 정의가 reset 되어 있더군요. 일단 예전에 올렸던 러시아어로 나오는 프로그램을 더이상 쓰기도 뭐 해서 직접 제작하기로 했습니다. 그간 cameracontrol_v2.dll 을 이리 저리 연구한 결과 대부분의 API 에 대해 분석이 완료 되었습니다. MFC42.DLL 을 필요로 하는 VC++ 에서 만들어진 DLL 이라 매우매우매우 불만 입니다만 .. -_-;;; 어쩔수 있나요. Disassemble 한 WIN32.PE DLL 코드를 보니 .. 좀 어처구니 없는 부분이 많이 보입니다. 보다보면 보이는 오..
C# 에서 DLL 로드 동적으로 하기. C# 에서 C# 용으로 만들어진 DLL 이 아니고서는 C++ 이나 C , Delphi 등에서 쓰듯이 LoadLibrary 로 불러 쓰는 방법이 DllImport 말고는 방법이 없을까요? 물론 있습니다. 그 DllImport 를 이용하여 다음 세가지의 함수를 kernel32.dll 에서 import 해 온 다음 사용하면 됩니다. 가장 먼저 필요한 것은 LoadLibrary() , GetProcAddress(), FreeLibrary() 이 세가지가 되겠습니다. 그리고 이 세가지 함수는 다음 방법으로 제작하려는 class 내에 선언 해 주면 됩니다. [DllImport("kernel32.dll", EntryPoint = "LoadLibrary")] private extern static int LoadLib..
C# 에서 일반 DLL 가져다 쓰기. C# 이 편리한 언어라고들은 합니다만 .. 사실 저는 편한지 전혀 모르겠습니다 -_-a Java 처럼 가져다 쓰기 편하다는 의미로서는 그 의미대로 편한 것 이 맞는 말 입니다만 ... 개발자가 그런 편리함으로 "편리하다" 라고 하는 건 사실 개발자로서의 자질이 의심 된다고 생각 되네요 .. 어찌되었든.. minGW (gcc) 에서 빌드한 32bit DLL 을 C# 에서 쓸수 있는걸까? 라는 생각을 해 본 결과 : 된다 입니다. 다만 테스트 한 환경이 XP 인데다 32bit OS 이므로 64bit OS 에서는 void* 타입이 4byte 가 아니고 8byte 이므로 분명히 문제가 생길 것으로 생각 되는군요. 일단 이전에 공유한 SHARERES.DLL 을 붙여다 보았습니다. 동작은 .. 됩니다. DLL 을 ..
Delphi 에서 USB 장치 인식 인지하기. 가끔 Device managing 관련 어플을 만들어야 할때가 있는데, 이때 도움이 되는 코드를 만들었습니다. USB 장치가 뜨면 GUID 와 해당 장치의 정보를 알아 올 수 있습니다. 먼저 USBdetector 유닛 소스 입니다. 이걸 쓰려면 다음과 같이 사용이 가능합니다. usb_detector := TUSBdetector .Create(Self); usb_detector.OnUSBArrival := OnConnected; usb_detector.OnUSBRemove := OnLeaved; usb_detector.OnUSBInfo := OnInfo; 예제를 더 들자면 다음과 같은 코드로 사용이 가능합니다.
M$.NET/VS2005/C# 에서 USB camera 해상도 설정 관련 사항. WPF 란걸 써야 하는 조건이라면 어쩔 수 없이 개발자들은 M$ 의 덩치크고 메모리킬러 인 .NET + C# 이라는 조건을 받아 들여야 할 것입니다. WPF 란 이쁘고 화려한 UI 까지는 다 좋은데, 안타깝게도 이 방식은 제가 볼때 Layered Window 위에다 .NET 이 열심시 이미지와 각종 컴퍼넌트 등을 그리고 있는 걸 합니다. 또한 GDI+ 를 wrapping 한 듯한 rendering 속도를 보여 주는 걸로 보아 조금 답답한 면도 있구요. 일단 C# 선생은 제가 볼때 (절대 제 게인적인 생각입니다) 10년 전 부터 제가 써온 Delphi 가 채용하고 있는 Application Framework + 객체지향 개념과 java 등등이 잘 버무려져 있는 무거운 언어 입니다. 다른 점 이라면, WPF..
비주얼 스튜디오 6 에서 최신 MSDN 라이브러리 사용하기. 아래 글에 이어 2.0 버젼이 중국 개발자에 의해서 만들어 진 것을 알 수 있었습니다. http://blog.tinybrowser.net/archives/452 단, 중국의 개발자는 소스만을 공개 하고 있으며, 이를 사용자가 RELEASE (DEBUG 로 빌드 하면 안된다 함)로 빌드하여 사용하면 된다고 합니다. 혹시 minGW 로도 빌드가 가능한지 보고 제가 빌드된 것을 올려 보도록 하겠습니다. 소스에 해당 dll 파일이 들어 있더군요. 링크(http://blog.tinybrowser.net/wp-content/uploads/2010/01/VSNetHelpsrc.zip)를 클릭하여 다운로드 받으세요. 비주얼 스튜디오 6 에서 보통 근래에 나오는 MSDN 을 쓸 수 있는 방법이 없는가 하고 구글신의 힘을..
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 가 각각 있..