Language & API
Language & API/C#
2015. 8. 25.
C++ MFC DLL을 C#에서 로딩하기
MFC DLL 에서 C#을 로딩하기 위해 다음과 같이 옵션을 세팅했다. MFC에서 DLL을 만드는 방법은 아래와 같이 3가지가 있습니다. 1. 공유 MFC DLL을 사용하는 기본 DLL(동적으로 MFC에 링크하는 기본 DLL) - 이 DLL은 Visual C++ 4.0에서 도입된 새로운 형식의 DLL입니다. - C, C++, 파스칼, Visual Basic 등 DLL 사용을 지원하는 모든 언어로 클라이언트 실행 파일을 만들 수 있으며 이 실행 파일은 MFC 응용 프로그램이 아니어도 됩니다. - 정적으로 링크되는 기본 DLL과 달리 이 형식의 DLL은 공유 MFC DLL이라고도 하는 MFC DLL에 동적으로 링크됩니다. - 이 형식의 DLL에 링크된 MFC 가져오기 라이브러리는 확장 DLL 또는 MFC D..
Language & API/C++
2015. 6. 26.
HEAP CORRUPTION DETECTED 발생
HEAP CORRUPTION DETECTED 발생 void CIni::SaveString(const TCHAR *KeyName, TCHAR *value) { int strLen = _tcslen(value); TCHAR *strQuot = new TCHAR[strLen + 1]; strQuot[0] = _T('\"'); _tcsncpy(strQuot + 1, value, strLen); strQuot[strLen + 1] = _T('\"'); strQuot[strLen + 2] = _T('\0'); WritePrivateProfileString(_appName, KeyName, strQuot, _fileName); delete[] strQuot; } 위와 코드 delete[] 부분에서 아래와 같은 에러가..
Language & API/C++
2015. 6. 23.
Mutex 관련 내용
CreateMutex 함수 SyntaxC++HANDLE WINAPI CreateMutex( _In_opt_ LPSECURITY_ATTRIBUTES lpMutexAttributes, _In_ BOOL bInitialOwner, _In_opt_ LPCTSTR lpName ); ParameterslpMutexAttributes [in, optional]: 보안 속성 지정, 핸들 상속 여부 bInitialOwner [in]: 뮤텍스는 뮤텍스 오브젝트를 생성하는 쓰레드에게 기회를 먼저 줄수 있다. 먼저 차지하는 사람이 임자가 되는 값은 FALSE => waitForSingleObject 뮤텍스 획득 용도뮤텍스를 생성하는 쓰레드가 먼저 기회를 얻는 TRUElpName [in, optional]: 뮤텍스 이름이다. ..
Language & API/C
2015. 6. 19.
define 매크로 ##연산자
토큰 붙여넣기 연산자 (##)int token10 = 1; #define paster(t) printf_s( "token" #t " = %d", token##t ) paster(10); 결과 : token10 = 1 위와 같은 define이 되어있으면 paster 넣어야 할 값은 상수를 넣어야 한다. 만약 변수를 넣으면 어떻게 될까? 위 소스를 예를 들어 아래 소스를 재구성 해보자. int test_int =10; paster(test_int); 이러면 define 부분에 printf_s( "token" #10 " = %d", token##10 ) 이 되는게 아니다. 결과는 printf_s( "token" #test_int " = %d", token##test_int ) 가 되어 버린다. 이걸 해결하려고..
Language & API/C++
2015. 6. 7.
함수 오버로딩(Function Overloading)
C++에서 함수 오버로딩을 지원해준다. 함수 오버로딩이랑 간단히 말해 함수이름이 같지만 파라미터가 다른 함수들이 존재 할 수있다는 뜻이다. 예1) int MyFunEx(char c) { ... }; int MyFunEx(int c) { ... }; 예2) int MyFunEx(char c, int a) { ...}; int MyFunEx(int a) { ... }; 하지만 아래는 컴파일 오류를 발생시킨다. 즉 리턴값이 다를 경우.. int MyFunEx(char c) { ... }; void MyFunEx(char c) { ... };
Language & API/C++
2015. 6. 2.
<iostream>
#include 특징 : 출력 스트림, 공부목적, VS2013 -> 템플릿 ->Visual C++ -> Win32 -> Win32 콘솔 응용 프로그램 토대로 작성 C의 경우와 같이, C++은 기본 입력/출력 기능을 제공하지 않습니다. 하지만, 모든 C++ 컴파일러는 iostream class 라고 알려진 체계적이고 객체지향적인 I/O 패키지를 기본으로 제공합니다. 가장 중요한 세가지 출력 스트림 중 하나이다. ostream, ofstream, ostringstream iostream은 #include 을 포함하고 있다. iostream에는 아래 표와 같은 Object가 있다. ** iostream 아래 __PURE_APPDOMAIN_GLOBAL extern _CRTDATA2 istream cin, *_P..