본문 바로가기

전체 글

(168)
HttpUtility 가 인식이 안될때 HttpUtility 를 사용하려 하는데 인식이 안될 수 있다 HttpUtility 는 .Net FrameWork 4.0 Full 버전에서만 사용할 수 있다.#ads_1 4.0 Full 버전을 깔고 난뒤 아래 순서로 실행한다.1. 프로젝트에서 오른쪽 마우스 팝업메뉴를 펼친다.2. "참조추가..." 클릭3. .Net 탭 선택4. System.Web 추가 모두 완료 후 솔루션을 닫았다가 새로 열면 인식이 된다 #ads_2
PInvoke 함수 'CXXXX__ReleaseDC'에 대한 호출 결과 스택이 불안정하게 되었습니다 오류 : PInvoke 함수 'CXXXX__ReleaseDC'에 대한 호출 결과 스택이 불안정하게 되었습니다 #ads_1디버깅할때 위와 같은 에러가 난다면 함수의 호출방법을 정의해 주지 않아서 입니다. 3.5에서는 호출방법에 대한 정의가 없는지 에러가 나지 않습니다. [DllImport("test.dll", CallingConvention = CallingConvention.Cdecl)] 인자를 받는 함수에서는 위와 같이 호출방법을 정의해 주어야 합니다. 그러면 에러가 발생하지 않습니다. 인자가 없는 함수는 기본적으로 Stdcall 방식으로 호출합니다. #ads_2
C++ <=> C# string 데이타 교환 C++ 로 만든 DLL과 C#의 클라이언트가 문자열을 주고 받을때는 int* 형을 쓰면 쉽다 C++ : dll 파일 #include #include extern "C" DLLTYPE int* test(int* str){ static wstring s = CA2CT((char*)str); //unicode 형으로 바꿔준다 s.append(L"--A"); //문자 추가 return (int*)s.c_str(); }#ads_1C# : dll Client public partial class Form1 : Form{[DllImport("AutoPost.dll")] public static extern IntPtr test(char[] str); // c++ 에서 보내온 int* 형을 IntPtr 형으로 받는다 ..
UNICODE 문자열 정리 2005년쯤에 어느분이 쓰신 글(어느글인지 링크를 잊어버림)을 나름 요약해 보았다.Ansistring 과 Uncode 문자열의 개념과 처리방법에 대해 쉽게 이해할 수 있다. #ads_1AnsiString SBCS (Single Byte Character Set) : 오로지 1 byte로 구성된 문자셋. 알파벳과 일부 특수문자만 표현 가능. DBCS (Double Byte Character Set) : 영문은 1byte 한글은 2 byte로 표현하는 확장형 Ansi 문자코드 MBCS (Multi Byte Character Set) : 하나의 글자를 표현할때 여러바이트가 조합될 수 있는 문자세트. 대부분은 2 byte를 사용한다. Unicode 윈도우에서는 UCS-2(16 bit) 를 사용하고 Unix 는 ..
CString, std::string, std::wstring 상호 변환 CString std::string std:wstring 상호변환 확실히 이해하고 암기하자!! #ads_1ANSI UNICODE 변환함수 : A(Ansi), T(Unicode) ANSI => UNICODE : CA2CT( [ANSI 문자열] ) UNICODE => ANSI : CT2CA( [UNICODE 문자열] ) 객체에서 원시 Buffer 구하기 std::string =>str.c_str() CString =>str.operator LPCWSTR()#ads_2 변환 예제 : CString cstr = _T("CString문자열"); std::string str = "string문자열"; std::wstring wstr = L"wstring문자열"; CString cstr2; std::string st..
윈도우즈에서 PThread 를 사용해 보자 PThread는 (Posix Thread) 유닉스계열의 표준 스레드 라이브러리이다.비록 유닉스계열의 라이브러리이지만 win32에서도 사용할 수 있다. #ads_1> 1. http://www.sourceware.org/pthreads-win32/ 사이트에서 Download링크를 눌러 FTP 주소로 들어가자.2. 현재 글쓰는 시점의 최신버전이 prebuilt-dll-1-11-0-release 이기에 이 디렉토리로 들어간다.3. 해당 디렉토리 내의 include와 lib 디렉토리를 다운로드 받는다.4. 다운받은 디렉토리내의 dll 파일들을 c:\windows\System32 디렉토리에 모두 복사한다.5. 비주얼 스튜디오를 연다.6. 프로젝트 -> 속성 -> VC++ 디렉터리를 연다.7. 포함디렉터리에 incl..
기초적인 클래스함수 콜백처리 방법 c++에서 템플릿을 사용하지 않고 일반적으로 콜백을 처리하는 방법입니다.누구나 다 아는 거지만 내가 헤깔려서 기록함 ㅠㅠ #ads_1CCObject 나 CCLog 등의 함수는 cocos2d-x의 객체입니다. class CallClass{ public: typedef void (CCObject::* finHandler)(int); //콜백 클래스함수포인터 타입지정 private:finHandler onFinHandler; //콜백함수 CCObject* finTarget; //콜백대상객체 //콜백 등록용 함수 void setFinHandler(CCObject* target, finHandler handler){ finTarget = target; onFinHandler = handler; } void doP..
CCNotification 을 이용한 메세지 송수신과 콜백함수 cocos2d-x 에서는 윈도우의 sendMessage 나 postMessage 와 같이 메세지 송,수신 방법으로 콜백을 처리할 수 있다.인터페이스를 만들어 구현한 다음 이벤트핸들러를 세팅하는 복잡한 구현을 간단하게 처리할 수 있다.CCNotification 이 이런 방법을 제공한다.#ads_1- 메세지를 수신하는 측 -메세지를 받을 곳에서 메세지수신자를 등록한다.bool init(){.... CCNotificationCenter::sharedNotificationCenter()->addObserver(this, callfuncO_selector(ActionLayer::receiveMessage), "hello", NULL); //메세지박스에서 메세지를 꺼내 hello 라는 글자가 들어있으면 receiv..