2005의 crt dll은 그냥 배포하면 남에 컴퓨터에서 실행이 안되는 지랄맞은 내용으로 바꼈다-_-
WinSxS라고 해서 옆에옆에 무슨 어셈블리라고 하는데 자세한 내용은 아래의 김성민씨의 사이트 참고
http://www.serious-code.net/moin.cgi/RedistributingVisualCppRunTimeLibrary

나도 이거때문에 많이 고생했는데
beta2때는 직접 폴더 뒤져서 시행착오해서 필요한 파일들 추출해서 자동압축풀림-_-으로 해서 배포했고
rtm이 되더니 C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packages\vcredist_x86 폴더안에
인스톨본이 생겼다
인스톨쉴드를 써서 머지해도 되지만 툴을 인스톨 하지는 않으므로 걍 실행하라고 배포했다-_-

그리고 정식판이 되더니
C:\Program Files\Microsoft Visual Studio 8\VC\redist
폴더안에 crt dll들이 차곡차곡 정리되어 있다
분명 rtm에선 못본 기억인데-_-
한글판 msdn을 찾아보니 windows안에 winsxs폴더를 뒤지고 없으면 crt명과 같은 폴더명이 있으면 그안에 manifest파일을 뒤지고 거기도 없으면 실행파일과 같은 폴더에서 manifest를 뒤진다..라고 한다.

그래서 폴더째로 배포하면 그나마 깔끔하겠다...라는 생각을 하고..
옆에 데스크탑을 xp를 깔아보고 2000을 깔아보고 하면서 테스트를 해봤는데
winsxs폴더를 뒤지거나 같은 폴더명안을 뒤지는건 xp이상에서고 그 이하에선 안된다
xp이하에서는 manifest참고 안하고 같은 폴더나 system32에서 직접 dll을 찾는다. ( 이것도 msdn에 써있는 내용이다 )
결국 실행파일과 같은 폴더에 넣었다-_-

MFC를 안쓰고 release버전만 배포한다면
C:\Program Files\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.CRT
안에 있는
Microsoft.VC80.CRT.manifest
msvcp80.dll
msvcr80.dll
만 실행파일과 같은 폴더에 넣어주면 된다.
msvcm80.dll은 매니지드C++용 crt라 native를 쓰는 경우는 배포하지 않아도 된다.

윈도우를 Top으로 올리는건

SetWindowPos(hWnd, HWND_TOP, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);
로 하면 되긴하지만, 이건 같은 어플리케이션내의 윈도우만 가능하다.


다른 어플리케이션의 윈도우는 이렇게 한다.

void ForceSetTop(HWND hWnd)
{
DWORD fromId = GetCurrentThreadId();
DWORD toId = GetWindowThreadProcessId(GetForegroundWindow(), NULL);

AttachThreadInput(fromId, toId, TRUE);
SetWindowPos(hWnd, HWND_TOP, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);
AttachThreadInput(fromId, toId, FALSE);
}


'게임개발 > ' 카테고리의 다른 글

시스템 이미지 가져다 쓰기  (1) 2006.03.06
VS2005 실행모듈 배포하기  (1) 2006.02.14
Variadic Macros in VC2005  (0) 2006.01.23
Named Return Value Optimization in Visual C++ 2005  (0) 2006.01.04
VC2005 추가 키워드  (2) 2006.01.04

전에 써논줄 알았는데 없네

VC2005에서는 이런게 가능하다.
#define CHECK1(x, ...) if (!(x)) { printf(__VA_ARGS__); }

#define 에서 argument list를 지원하지 않아서 불편했었는데 ㅋ

#ifdef __USE_TRACE__
#define STRACE( ... ) g_STrace.Printf( __VA_ARGS__ );
#else
#define STRACE( ... )
#endif

이런식으로 쓰고 있다

다른 용도는 잘-_-;;

'게임개발 > ' 카테고리의 다른 글

VS2005 실행모듈 배포하기  (1) 2006.02.14
다른 프로그램창 Top으로 올리기  (0) 2006.01.24
Named Return Value Optimization in Visual C++ 2005  (0) 2006.01.04
VC2005 추가 키워드  (2) 2006.01.04
D3DXLoadSurfaceFromSurface  (0) 2005.12.27

'지르기 > 게임' 카테고리의 다른 글

엘더스크롤4 -오블리비언  (0) 2006.05.10
N3  (0) 2006.05.06
[PSP] DJMAX  (0) 2006.01.20
드래곤볼 Z 스파킹  (0) 2005.12.20
완다와 거상 - 한글판  (0) 2005.11.28
겨..결국..orz

'지르기 > 게임' 카테고리의 다른 글

N3  (0) 2006.05.06
[PSP] EXIT  (0) 2006.01.20
드래곤볼 Z 스파킹  (0) 2005.12.20
완다와 거상 - 한글판  (0) 2005.11.28
[psp] 버추얼 테니스 월드투어  (0) 2005.11.28
왠지 낚시인듯한-_-;

과연 보게 될까..;;

흐음..흐으음..흐으으음....

'게임개발 > ' 카테고리의 다른 글

다른 프로그램창 Top으로 올리기  (0) 2006.01.24
Variadic Macros in VC2005  (0) 2006.01.23
VC2005 추가 키워드  (2) 2006.01.04
D3DXLoadSurfaceFromSurface  (0) 2005.12.27
mutable  (0) 2005.11.22

아마도 표준은 아닐거라고 생각하고 2003의 지원여부는 잘 모름-ㅅ-;
이미 표준이 아니어도 vc2005의 강력한 기능이 너무나도 유용한 경우는 생까주기로 하셨슴.

override

abstract

__interface

sealed

.끝.
native 기준이고 clr에서만 사용가능한건 적지 않았음
위에 몇 개 나왔지만 __is_abstract같은 컴파일 타임에 사용가능한 TypeTraits가 꽤 있다.
특정 클래스가 base클래스를 상속받았는지를 체크하는것도 있고(clr에서만 되지만)
__has_copy(type)나 __has_assign(type)같은
native에서 쓸만한것도 꽤 있다.
근데 사실 TypeTraits는 필요한건 native지원안하면 loki를 써버리면 그만이라 헹~

'게임개발 > ' 카테고리의 다른 글

Variadic Macros in VC2005  (0) 2006.01.23
Named Return Value Optimization in Visual C++ 2005  (0) 2006.01.04
D3DXLoadSurfaceFromSurface  (0) 2005.12.27
mutable  (0) 2005.11.22
콤보박스 드롭박스 부분 크기 조절하기  (0) 2005.11.22

+ Recent posts