VS2005 실행모듈 배포하기 참고


sp1을 깔았더니 redist dll들이 바껴버렸다..
으악!!

redist셋업파일로 설치하도록 한 경우는 상관이 없지만..
그전에 배포를 직접 파일을 포함해서 배포하는 형태였기 때문에 문제가 심각하다.
XP의 경우는 폴더를 나누고 manifest를 직접 구성을 해주면 vc2005버전 dll과 vc2005sp1버전 dll을 동시에 쓸 수 있지만 2000의 경우는 manifest를 생까..; 주시기 때문에 그런식의 배포가 불가능하다..;;;

그럼 그전에 2005로 배포하고 있던 모든 dll및 실행파일을 sp1으로 통일시켜버리면 간단하지만..;
다시 싹 빌드하는데 시간도 오래걸리고 소스없는-_-(가이블..;)dll들이 있어서 피곤...;;
소스없는 dll 새버전으로 해달라고 하면 sp1에서 밖에 안된다고 안해주면 어쩌지..;

'잡담' 카테고리의 다른 글

요즘  (5) 2007.01.24
티스토리 탁상용 달력을 받게되다.  (5) 2007.01.11
2007년 토정비결  (1) 2006.12.14
티스토리 새기능중에 키워드기능  (4) 2006.12.10
allgd.net의 데브루키..라는 네이버 카페.  (6) 2006.11.19

'자료 > Program' 카테고리의 다른 글

bugtrap bugfix  (2) 2007.04.10
bugtrap 소스공개  (6) 2007.04.10
스칼렛 2.0 - dds와 알파채널을 지원 하는 이미지뷰어  (0) 2006.10.18
멋진 HeightMap툴  (0) 2006.10.11
Catch all bugs with BugTrap!  (3) 2006.08.03

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를 쓰는 경우는 배포하지 않아도 된다.

전에 써논줄 알았는데 없네

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

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

다른 프로그램창 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

vector<int> values;
for each( const int value in values )
{
cout << value;
}

같은 코드가 가능해졌다
감동-.ㅜ

표준이 아니라고 하면 할말은 없으삼-.-

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

mutable  (0) 2005.11.22
콤보박스 드롭박스 부분 크기 조절하기  (0) 2005.11.22
VS에서 lua의 syntax coloring을 해보쟈  (0) 2005.10.14
파일포맷 png  (0) 2005.09.07
Cubemap을 이용한 SkyBox  (4) 2005.07.11

+ Recent posts