본문 바로가기

Developement/C/C++

(71)
MSYS : Windows 에서 리눅스 소스 빌드의 영광을 - -- 이번엔 어떠한 사진도 없습니다, MSYS 에 사진 따위는 사치 ... (라지만 올릴 사진이 없다는 것이 함정) -- Windows 는 애시당초 상용 OS 임에도 불구 하고, 자체 어플리케이션을 개발 할 수 있는 컴파일러나 환경을 전혀 지원 하지 않습니다. 일반적으로 Windows 를 단지 "단순한" 용도로만 쓰는 사람들이야 이런 개발환경을 고려 하거나 생각해야 할 부분이 전혀 없습니다만, 조금이나마 "무엇인가를 만들어 보겠다." 라는 창의성을 가진 사람이라면 이런 폐쇠적인 환경이 얼마나 (OS값이라고 지불해야 하는 금액을 생각하면) 불합리하고 오만한 Microsoft 의 환경에 자신이 처해 있는가를 알 수 있습니다. 혹시나 Visual Studio나 MFC 가 있는데 뭐가 걱정이지요? 하는 질문을 ..
Cygwin+GCC/G++ 에서 POSIX path 지정 오류 발생. (해결) 이전의 문제점 이던, CodeBlocks 에서 새로운 Cygwin w/ gcc/g++ 컴파일 오류는 다음과 같이 해결이 가능했습니다. 간단히, Cygwin 내에서 /usr/bin/ 내용을 확인 해 보니, 다음과 같이 연결 되어 있더군요. /usr/bin/g++.exe 는 /etc/alternatives/g++.exe 를 symbolic-link. /etc/alternatives/g++.exe 는 다시 /user/bin/g++-4.exe 를 서로 symbolic-link 하고 있었던 것 입니다. 그래서 CodeBlocks 에서 직접 /usr/bin 에 있는 g++.exe 를 실행 해서는 컴파일 결과를 얻을 수 없었던 것 입니다. 이 문제는 CodeBlocks 내의 옵션을 다음과 같이 설정 해 주면 됩니다...
Cygwin+GCC/G++ 에서 POSIX path 지정 오류 발생. (원인) 우분투에서 개발이 좀 어려운 면이 있어, console application 개발용으로 Cygwin 과 g++ 를 CodeBlocks 10.05 에서 사용 중 이었습니다만, 구 버젼 cygwin 의 gcc 가 3.4.4 인 관계로 wstring 과 wostream, wistream 등에서 문제가 발생 했습니다. 그래서 gcc 4.5.1 을 쓰는 마지막 cygwin version 을 사용 했더니, 여전히 위와 같이 컴파일 하면 아무런 동작을 하지 않습니다. 혹시나 해서 cygwin shell 에서 컴파일을 해 보니, nodosfilewarning 을 지정하라는 말이 나옵니다. 아무래도 DOS 형태의 지정은 POSIX 에 위배 되는 행우 이겠죠. 일단, 이 nodosfilewarning 이란 오류를 안보기 ..
libRTEA rev0.2 : TEA 인코딩/디코딩 C++ class 저번주에 올렸던 libRTEA 에 몇가지 버그가 있는 것을 수정하고, 기능을 추가 하였습니다. 혹시라도 사용하신 분이 계시다면 이것으로 업데이트 해 쓰시면 좋겠습니다. 바뀐 헤더는 다음과 같으며, HexChar 라는 것이 추가 되었습니다. 위 캡쳐 이미지 처럼 문자열/바이트 배열 을 Hex 값을 표시하는 문자열로 처리 해 주는 기능 입니다. 활용도는 암호화 데이터를 ASCII 내에서 처리 할 수 있도록 뭔가 만들 수 있게 해 주는 정도 이겠습니다.
TEA 알고리즘을 응용한 간단한 class : RTEAcodec AES 는 무겁고, 뭔가 좀 작고 쓸만한 암호화 모듈로는 나온지 오래 되었지만서도 128bit 인코딩을 지원하는 TEA 알고리즘이 있습니다. 인터넷에 여러 다채롭고 호화로운 소스가 널렸긴 한데, 막상 쓰려면 뭘 어찌 하라는건지 모르도록 만든 소스가 많더군요. 그래서 대충 쓸만하게 나름 만든 소스를 공개 합니다. CodeBlocks 에서 컴파일이 되며, MinGW 에서 이상없이 구동 됩니다. 내부적으로 버그가 있을수도 있긴 합니다만 ... 그건 알아서 ... 참조하면 되는 소스 : src\libRTEA.cpp/h 파일. 예제 : main.cpp 저작권: opensource 이며, 어떠한 라이센스도 없으며, 책임도 없습니다. 제가 만든 코드를 사용해서 문제가 생기는 부분에 저는 책임을 지지 않습니다! lib..
일반 문자열을 바이너리형태의 문자열로 변환 하고 다시 역변환 하기. 일부 프로그램들이 serial key 들을 16진수 값으로 받아서 처리하거나 하는 경우를 보신 분들이 계실 것 입니다. 이런 경우, 사람이 알아 볼수 있는 일반 ASCII 값으로 바이너리(16진수) 를 받아서 다시 원본 데이터로 변환 하는 경우 입니다. 회사 프로젝트에서 필요한 부분이 있어서 급하게 만든 코드인데, 나름 쓸만한 것 같아 공유 합니다. 길이 검사 등은 안 되어 있으므로, 재량껏 개조해서 마음대로 쓰세요 !
Visual Studio 에서 import 한 프로젝트를 Code Blocks (gcc/minGW) 에서 빌드 실패 할때. 정말 많은 이유로 Visual Studio 를 싫어 하는 이유중, 그중 하나가 바로 위 이미지처럼 나오는 뭔가의 DLL 이 없어서 오류가 나는 경우 입니다. 멍청한 M$놈들이 지들이 만든 DLL 의 참조 오류가 많아지자, manifest 개념을 도입해서 DLL 특정 위치 해결 점을 어찌저찌 해 보고자 해 놓고선, 컴파일러 자체가 Visual Studio 에서 개발에서 쓰는 DLL 이 없으면 표준 WindowsAPI 로 도는 프로그램이 돌지도 못하게 해 놓은 것이죠. M$ 개발자들이 편하니, 사용자가 되는 VS 개발자가 개노가다 해야 하는 겁니다. 참으로 븅신같은 현상이 아닐수가 없죠. 분명히 프로젝트를 표준 Windows API 만을 사용하는 프로젝트로 만들어도, 저놈의 알수도 없는 DLL 참조 오류는 ..