First-Chance Exception
코드 프로젝트에서 소스 코드를 하나 가져왔는데, 수 년이 지난 코드라 그런지 Visual Studio 2005에서 빌드하려니 이런저런 오류가 많이 났다. 어찌어찌 손을 보고 코드를 실행시키는데 이게 웬걸 First-Chance Exception이 발생한다. C++을…
코드 프로젝트에서 소스 코드를 하나 가져왔는데, 수 년이 지난 코드라 그런지 Visual Studio 2005에서 빌드하려니 이런저런 오류가 많이 났다. 어찌어찌 손을 보고 코드를 실행시키는데 이게 웬걸 First-Chance Exception이 발생한다. C++을…
알립니다.이메일 내용을 그대로 옮겼습니다. 닷넷 경향 .NET Framework 3.0이 나왔습니다만, WPF 같은 최신 기술은 거의 윈도우 비스타에서만 적용되기 때문에 2.0을 주로 씁니다. 오래 전에 닷넷을 도입한 곳은 1.1을 아직 쓰기도…
C++에서 패킷을 struct로 정의해놓고 소켓 통신을 하는 경우가 많은데, C#에서 동일한 방식을 지원하려면 손이 많이 가서 만들었던 라이브러리입니다. 이렇게 바뀌었습니다. MIT 라이센스 채택. (쉽게 말해 상업적 용도로 써도 상관 없습니다.)…
당분간은 C++/CLI에서 손 떼고 Visual C++에 전념할 듯 하다. 그 전에 마지막으로 그 동안 해왔던 일을 정리해볼까 한다. 어셈블리 동적 적재와 해제 일반 DLL와 달리 어셈블리는 마음대로 불러들였다가, 떼낼 수가…
2007.07.20 실험 조건을 조금 바꿔서 테스트를 다시 해봤다. 지난번엔 Debug 모드로 컴파일했는데, 이번에는 Release 모드에서 Use Link Time Code Generation 최적화 옵션을 추가했다. 뿐만 아니라 /clr 옵션을 제거한 완벽한 네이티브…
네이티브 C++에서의 DLL을 CLR 환경에선 Assembly라 부른다. 그런데 CLR 환경에선 한번 불러들인(Load) 어셈블리를 마음대로 해제(Unload)할 수가 없다. 애초에 System::Reflection::Assembly에는 Unload에 해당하는 함수 자체가 없다. 단 독립적인 메모리 공간을 갖는 애플리케이션…
32비트 컴파일할 땐 문제 없던 C++/CLI 코드가 64비트로 컴파일하자 링킹 오류를 내고 죽었다. 다음은 실제 프로젝트 코드에서 나온 오류 메시지 그대로이다. 물론 알아볼 수 없게 소스 코드 이름이나 프로젝트 이름을…
Microsoft Visual C++ 2005를 사용한 프로필 기준 최적화 요약 링크 시간 코드 생성(LTCG)과 프로필 기준 최적화(PGO)를 사용하면 20% 이상 성능을 향상시킬 수 있다고 한다. ATL 서버 라이브러리와 도구 소스코드가 공개되었다.…
GC 모드 값에 따라 가비지 콜렉터의 개수가 달라진다고 했었다. 그러나 의문이 남았다. 한 프로그램에 애플리케이션 도메인이 여러 개 있을 때는 어떻게 될까? C++/CLI에서 Managed Thread와 Native Thread를 혼용해서 사용하면 어떻게…
Native C++로 작성한 소프트웨어를 C++/CLI로 포팅해야 하는 상황이었다. 컴파일러에 /clr 옵션을 주고 빌드하자 한번에 성공했다. 기뻐하며 F5 키를 눌러 실행시키는 순간, 런타임 오류가 발생했다. 각설하고 이틀 가량 조사하고 테스트한 결과,…