팀장 딜레마에 관한 글

http://channy.creation.net/blog/?p=426

'일상' 카테고리의 다른 글

생각의 정리..  (0) 2008.12.17
회의를 좋아하는 매니저의 특징  (0) 2008.09.17
꼬마 바보..  (0) 2006.11.06
딜마 아쌈 - t시리즈  (0) 2006.11.01
위타드 기문 홍차..  (0) 2006.10.25

'Dev > C++' 카테고리의 다른 글

tr1::regex (boost::regex) 샘플코드  (0) 2007.10.21
boost 를 이용한 TR1 Library 사용하기  (0) 2007.10.10
Unhandled C++ Exceptions  (0) 2007.06.19
OutputDebugString  (0) 2007.05.23
C++0x  (0) 2007.05.16
#include <iostream>
using namespace std;
void term_func()
{ cout << "term_func was called by terminate." << endl; exit( -1 ); }
int main()
{ try { set_terminate( term_func ); throw "Out of memory!"; // No catch handler for this exception } catch( int ) { cout << "Integer exception raised." << endl; }
return 0; }

'Dev > C++' 카테고리의 다른 글

boost 를 이용한 TR1 Library 사용하기  (0) 2007.10.10
VC++ 2005 배포  (0) 2007.06.22
OutputDebugString  (0) 2007.05.23
C++0x  (0) 2007.05.16
GRETA  (0) 2007.05.14


// printf 포맷을 이용하는 OutputDebugString 함수
void Trace(LPCTSTR szFormat, ...)
{
    enum { BUFF_SIZE = 2048 };

    TCHAR szTempBuf[BUFF_SIZE] ;
    va_list vlMarker ;

    va_start(vlMarker,szFormat) ;
    _vstprintf(szTempBuf,szFormat,vlMarker) ;
    va_end(vlMarker) ;

    OutputDebugString(szTempBuf) ;
}

'Dev > C++' 카테고리의 다른 글

VC++ 2005 배포  (0) 2007.06.22
Unhandled C++ Exceptions  (0) 2007.06.19
C++0x  (0) 2007.05.16
GRETA  (0) 2007.05.14
A non-type template-parameter  (0) 2007.05.14

'Dev > C++' 카테고리의 다른 글

Unhandled C++ Exceptions  (0) 2007.06.19
OutputDebugString  (0) 2007.05.23
GRETA  (0) 2007.05.14
A non-type template-parameter  (0) 2007.05.14
Member template specialization  (0) 2007.05.14
콘솔에서 Timer 이벤트 처리 방법을 찾다가 발견한 것.
일명 멀티미디어 타이머라 불리는 ..

일반적인 윈도우의 Timer API 보다 정확도가 높고 윈도우 큐를 이용하지 않아 윈도우 없이도 사용 할수 있다는 장점.


About Multimedia Timers

Multimedia Timer Functions

'Dev > Windows' 카테고리의 다른 글

SWC (Services Without Components)  (0) 2007.08.08
RestartService  (0) 2007.07.19
.NET Enterprise Services 성능 ( vs COM+)  (0) 2007.05.14
DLL 파일 찾는 순서  (0) 2007.05.14
DLL export  (0) 2007.05.14

'Dev > Windows' 카테고리의 다른 글

RestartService  (0) 2007.07.19
MultiMedia Timer  (0) 2007.05.14
DLL 파일 찾는 순서  (0) 2007.05.14
DLL export  (0) 2007.05.14
_beginthread, _beginthreadex  (0) 2007.05.14
1. The directory from which the application loaded.

2. The current directory.

3. The system directory. Use the GetSystemDirectory function to get the path of this directory.

4. The Windows directory. Use the GetWindowsDirectory function to get the path of this directory.

5. The directories that are listed in the PATH environment variable.

--
LoadLibrary혹은 DLL을 동적링크할때 특정경로에 관계없이 응용프로그램의 디렉토리에서 먼저 DLL을 로드 하려면 ...

응용프로그램이름 뒤에 ".local" 이란 이름을 가진 빈 파일을 생성한다.
예를들어 응용프로그램 이름이 foo.exe 일때 foo.exe.local 이란 빈 파일을 생성하면 사용하는 DLL을 현재 디렉토리에 있는것 먼저 로드 시킨다.

'Dev > Windows' 카테고리의 다른 글

MultiMedia Timer  (0) 2007.05.14
.NET Enterprise Services 성능 ( vs COM+)  (0) 2007.05.14
DLL export  (0) 2007.05.14
_beginthread, _beginthreadex  (0) 2007.05.14
서버 개체 오류 'ASP 0177 : 800401f3'  (1) 2007.03.29

1. 첫번째 방법
__declspec(dllexport) 키워드를 사용한다.
이경우 calling convention이 "__cdecl" 이면 함수이름 그대로 export되지만 calling convention이 윈도우 표준인 "__stdcall" 이면 함수이름규칙이 변한다

[msdn]
__stdcall Name-decoration convention
An underscore (_) is prefixed to the name. The name is followed by the at sign (@) followed by the number of bytes (in decimal) in the argument list. Therefore, the function declared as int func( int a, double b ) is decorated as follows: _func@12



2. 두번째 방법
.def(Module-Definition) 파일을 작성해 export 시킨다.

EXPORTS
   FunctionName

--
DLL에서 Export된 함수확인하기
1. dumpbin /EXPORTS "DLL이름"
2. Depends툴 이용

'Dev > Windows' 카테고리의 다른 글

.NET Enterprise Services 성능 ( vs COM+)  (0) 2007.05.14
DLL 파일 찾는 순서  (0) 2007.05.14
_beginthread, _beginthreadex  (0) 2007.05.14
서버 개체 오류 'ASP 0177 : 800401f3'  (1) 2007.03.29
VB 지원중단..  (0) 2005.03.23

Create a thread.

unsigned long _beginthread( void( __cdecl *start_address )( void * ), unsigned stack_size, void *arglist );

unsigned long _beginthreadex( void *security, unsigned stack_size, unsigned ( __stdcall *start_address )( void * ), void *arglist, unsigned initflag, unsigned *thrdaddr );


C-Run time 라이브러리를 지원하는 Thread 생성함수들이다.

C-Run time 라이브러리를 지원한다는 뜻은 Thread내에서 C-Run time 함수를 사용했을경우 함수의 정확한 호출을 보장한다는 뜻이다.
ex) strtok


* _beginthread, _beginthreadex의 차이점
_beginthreadex의 경우 상태관리나 NT쪽에서의 보안쪽 파라미터가 추가 되어 있다 (_beginthread의 확장)

Thread 함수의 호출 방식이 틀리다.
_beginthread -> __cdecl
_beginthreadex -> __stdcall


* _endthread, _endthreadex의 차이점
_endthread와 _endthreadex 함수는 _beginthread와 _beginthreadex 에 의해 생성된 Thread함수를 명확히 종료할때 사용하고 Thread함수가 return 되면 자동으로 호출된다.

그러나 _endthreadex는 _endthread와 틀리게 Thread Handle을 자동으로 닫아주지 않는다
그래서 명시적으로 CloseHandle API를 이용해서 Handle을 닫아 주어야 한다

::CloseHandle(handle);

--
MSDN

'Dev > Windows' 카테고리의 다른 글

.NET Enterprise Services 성능 ( vs COM+)  (0) 2007.05.14
DLL 파일 찾는 순서  (0) 2007.05.14
DLL export  (0) 2007.05.14
서버 개체 오류 'ASP 0177 : 800401f3'  (1) 2007.03.29
VB 지원중단..  (0) 2005.03.23

+ Recent posts