본문 바로가기

컴퓨터/언어,프로그래밍

[본문스크랩] 비주얼 C++ 6.0과 .Net의 차이에 대해서

출처 술파티@.@ | 
원문 http://blog.naver.com/leeck10/110009912532
수고많으십니다.. 

저는 비주얼 C++ 6.0까지는 많이 써봤는데... 닷넷에 대해서는 잘 모르겠습니다. 

한번 닷넷을 깔아서 비주얼 C++ 6.0에서 만들었던 프로젝트를 열어봤더니.. 

닷넷으로 변환해줘야 한다고 해서 변환을 했더니.. 
이상없던 프로젝트가 무슨 에러가 생기면서 컴파일이 안되었던것 같습니다. 

정확히 무슨 에러였는지는 기억이 안나네요.. 

비주얼 C++ 6.0에서 닷넷으로 넘어갈 때 아무 문제 없는지... 
제가 모르는 뭔가가 있는지 궁금합니다. 

수고하세요.. 

 2005-09-29 오후 12:43:59   /  번호: 543834  / 평점:  (-)     

Re: 음... 김정택 / copycd   

6으로 짠 코드가 몇줄 안되는 거라면.  별무리 없이 변경이 되지만. 
코드량이 많다면.... 별의 별 상황이 다 나오기 때문에.. 

문법적인 에러도 많이 나지만, 런타임시.. 에러도 많이 납니다. 
코드량이 많다면, 결코 쉬운 작업이 아닙니다. 

=> 
2005-09-29 오후 3:21:36   /  번호: 543867  / 평점:  (-)     
Re: ... 박원하 / splasma   

6.0에서 .Net 으로 변경시 제가 알고 있는 문제점 몇가지 입니다. 

1. platform 관련 defines -> WINVER, WIN_NT 의 Default 값들이 좀 다르구요.. stdafx.h 가 가장 많이 바뀝니다. 

2. .net 에는 Wizard Code가 없죠... 코드는 깔끔해 지는데, 키보드보다 마우스를 써야 하니.... 더 귀찮기도 합니다.... 

3. template관련 내용이 STL을 사용할 수 있는 수준까지 올라갔습니다. 컴파일 오류가 난다면.. 아마 여기서 가장 많이 날겁니다.. 

4. Multi-Thread에서 Thread간 SendMessage()에서 오류가 발생합니다. 6.0 에서는 Thread가 분리되어서 동작하는데 반해, .net에서는 보내는 쪽의 Thread에서 동작합니다... 아주 심각한 문제였습니다. (PostMessage는 정상 동작) 

   자세히 쓰면... Thread A, B 두개가 있을 때, A에서 B로 SendMessage를 호출하면. 6.0 에서 컴파일하면 Thread B에서 Message Handler가 동작하는데, .Net에서 컴파일 해보면... Thread A 에서 Handler가 동작합니다... 상당히 어처구니 없는 현상이 발생했습니다. 
  ( MSDN 내용도 6.0과 .Net 의 설명이 다르더군요.... ) 

5. EditBox 의 SetWindowText() 를 호출했을 때, 6.0에서는 OnEditChange 가 발생하지 않습니다.....만... .Net 에서는 Notify가 발생합니다. 
  잘못하면.. 무한루프로 빠집니다. 

6. 기타, MSDN 을 보면... 뭐가 안됐었는데, 좋아졌다는 내용이 상당히 많은데... 흠... 잘 기억이 안나네요...^^;;; 

7. 확실히 Editor의 성능은 6.0보다 좋아진것 같습니다. Ctrl-Enter 로  vi 의 "O" 명령과 비슷한 효과도 낼 수 있구요.... (커서 윗줄에 추가하기) 

 F12 키로 함수 이름가지고 본체로 바로 점프할 수도 있구요... 그치만 ClassWizard가 없으니... 마우스 의존율이 좀 더 높아져서... 상당히 불편하긴 합니다... 

 그리고 Resource Editor 에 버그가 좀 많습니다... 특히 Undo 관련해서는... 제대로 동작도 안합니다... 몇 번 하다보면.. 이상해지구요... 

 특정 버튼이나... 다이얼로그 캡션에 클릭해 놓구 Enter 치면... 캡션이 날아가버리는 경우도 있구요... 그래서 Resource Editor 는 6.0꺼를 많이 사용합니다... 왔다갔다... 




정말 어이없는 질문 한번 해봅니다..  현재 컴퓨터를 포맷하고 다시 필요하여 아는 분의 FTP에서 다운 받고 있는데.. 

Visual Studio 6.0  으로 공부를 했었습니다.. 근데 지인의 FTP에는 Visual Studio Net 밖에 없는 겁니다.. 

6.0 과 Net은 단지 버전의 차이인가요? 아니면 근본적으로 다른건가요? 검색을 해봐도 너무 기본적인 거라 찾기가 힘들고 주변의 분들께 물어보려 해도 현재 연락을 할수가 없어서 일단 올려봅니다. 

답변 부탁드립니다. 



우리가 자바 하면 강력한 이유는... 어떠한 플랫폼에서도 돌아가는 특성 때문이겠죠. 자바 가상 머신을 통해서... 

.net 도 이것과 비슷한 특성을 가집니다. 

Visual Studio .net 에 포함되어 있는 모든 IDE(통합 개발 환경)들은 모두 .net 플랫폼 위에서 돌아가게 되어 있습니다. 

어떤 플랫폼이든 .net 위에서 자신이 개발한 프로그램이 동작하므로.. 자바 가상 머신처럼 .net 플랫폼이 있으면 어디서든 동작이 가능합니다.

이를 가능하게 하기 위해서 MS는 6.0 시절에 사랑을 많이 받았던 Visual Basic 6.0 에 대대적으로 수정을 감행합니다. 

말그대로 문법만 Basic 이지 전체적으로 동작하는 흐름은 C#과 비슷하다고 생각합니다. 

쉽게 말씀드리면... Visual Basic 6.0과 Visual Studio .net으로 만든 프로그램들은 작동할 수 있는 환경 자체가 틀린 겁니다. 

단 여기서... Visual C++ .net 은 오리지널 윈도우즈 환경과 .net  환경에서 돌아가는 프로그램을 모두 만들 수 있는 특권을 가지고 있습니다.(Studio 제품군중에서 유일함...) 

Visual C++ 을 사용하실거라면 Visual Studio .net 을 사용하시더라도 크게 달라지진 않을 듯 싶습니다. 




VS와  VB에서 잘돌아가던것을 닷넷으로 컨버팅한다음에는 안돌아가고 원래 VS60으로 컴파일해도 사용할수 없습니다. 

VS2003에서 VC++은 MFC와 win32를 지원하지만 한번 컨버팅하고 나면 안돼는 프로그램도 있으므로 주의 하시기 바랍니다. 

이상... 




VC6에서 F1키로 최신판 MSDN과 연결할수있는 애드온프로그램있습니다. 




닷넷 2003을 컴퓨터에 깔았더니 c#과 비주얼 베이직 닷넷등만 있을줄 알았는데 C++ 도 있더군요. 

이전 의 C++ 과 다른건가요? 

닷넷으로 만든 것은 닷넷 프레임워크가 있어야지 동작한다고 들었습니다. 

그럼 닷넷에 있는 C++ 도 마찬가지인가요? 

답변 부탁드리겠습니다. 

==>  닷넷 C++ 과...네이티브 C++ 은 달라요...후자가 VC 에서 말하는 C++ 과 거의 같은 겁니다... 전자는 managed c++ 이라고도 하고요... 





여기에 올려도 될지 모르겠는데.. 

VC++ .NET 환경에서 프로그램을 한 경우, 그 하위 버전(VC++ 5.0~6.0)에서 code를 수정 및 실행시킬 수 있는 방법이 없을까요? 

=> VC++.NET의 MFC는 버전이 7.0입니다. VC++ .NET 2003)도 MFC 7.0이군요.. 지금 .NET 2003 사용중.. 

MFC가 7.0으로 업그레이드 되면서 몇몇 유용한 클래스가 추가 되었겠죠.. 
자세한건 모르겠음.. 집에 있는 세 권의 MFC 책들 모두 VC++ 6.0이거든요.. ㅡ.,ㅡ 
그리고 프로젝트 파일은 아마도 호환이 안될 것입니다. 
VC++ 6.0에서 빈 프로젝트로 만들어서 소스 파일들(app,view,doc등등)을 추가 해서 
컴파일 하면 되지 않을까요?? 

=> 일단 뭔가 닷넷 버전 이상의 specific 한 기능을 사용하지 않으면.. code compile 자체는 
크게 문제 없을 겁니다. 아마 몇몇 인자나 리턴값 수정하는 수준일 겁니다. 
문제는 프로젝트 컨버팅인데 

2002 버전에서 6.0 버전으로 컨버팅은 툴도 있습니다. 자료실에서 받으실 수 있고요 
2003 버전은 아직 컨버팅 툴이 나와 있지 않습니다. 
따라서 이 경우는 직접 워크스페이스 생성하고 추가하는 방법으로 처리하셔야 할 겁니다. 




저의 경우 VC6이 XP와 문제가 생기므로 .net을 사용합니다. 

VC6을 쓸 경우 어떤 문제인지는 모르겠지만.. 디버거에 진입하거나 빠져나올때 잠시(30초~1분) 먹통이 되는 증상이있습니다. 

포맷하고.. 몇번을 다시 설치해봤지만.. 항상 이런 문제가 있어서... .net을 사용하는데.. 
장단점이 있는것 같습니다. 

최적화 옵션이 .net에서 제법 추가됐던데.. 얼마나 속도 차이가 나는지는 측정해 보진 못했지만... 체감 상으론 별 차이 없습니다. 

그리고 .net은 공식적으로 98이상만 지원합니다. 
MFC ActiveX 컨트롤을 만들었더니... 대부분의 95에 설치가 되지 않더군요.. 

제 개인적인 견해로는.. 그냥 VC6사용하셔도 무방합니다. 
c#등은 사용하실 목적이 있다면.. .net을 사용해야 겠지만.. 
.net은 속도도 느리고.. 컴파일 느리고, 하드 많이 먹는 단점 있습니다. 

다양한(vb, c#, c, c++)을 하나의 통합 환경에서 사용할 수 있는 장점은 있습니다. 

=> 안녕하세요 . 
일단 단순히 vc6.0에서 하던 작업을 .net을 사용하여 한다고 할때 장점과 단점을 
나름대로 적어 봅니다. 

장점 
1) 컴파일러가 똑똑해 졌다 .. 
2) ANSI C++ 에 보다 가까워 졌다 . 
  -> STL쪽 코드를 많이 사용하신다면 .Net을 사용하는 것도 나쁘지 않답니다. 
3) F12 키의 기능이 정말로 좋아졌다 ^_^; 
4) 디버깅이 편리해 졌다.. 
5) 인텔리센스가 뛰어나다. 
6) 동적 도움말 기능이 있다 ;; 

단점. 
1) 약간 시스템이 좋아야 한다. 
2) 98디버깅시 리모트 디버깅을 해야 한다. 
3) MFC의 경우 MFC7.0과 관련된 dll을 같이 배포해야 한다. 
4)  .. 음 또 모가 있을까요 -_-; 

@냐옹이 



자료실에 서광수 님이 올리신 닷넷 프로젝트 
6.0으로 바꾸는 프로그램이 있을겁니다.. 
그것을 이용하시면 쉽게 바꾸실수 있을거 같은데.. 
저는 안써봐서.. 정확히는.. 
^^ 그럼 도움되셨길 바라며 즐거운 하루되세요. 



상관없을지도 모르지만 vs 6.0 하고 vs.net 하고 같이 깔아도 상관없나요? 

지금 제 컴퓨터에 vs 6.0 이 깔려있고요, .net을 깔아볼라고 하는데 
6.0을 지우고 깔아야 하는지 아니면 안지우고 깔아도 되는지... 
또, 안지워도 된다면 설치 폴더는 그냥 기본 폴더로 해도 되는지... 
아님 임의 폴더에 해야하는지... 궁금하네요 
여기 게시판 성격하고 안 맞는 질문일지도 모르지만 ㅠㅠ 
누군가 한테 들었는데 같이 깔아도 되기는 하지만 어떤 문제가 있다는 것으로 들었는데 
가르쳐 주세요 (__) 

=> 문제 없습니다. 6.0 -> .net 이라면 
거꾸로 했을때에 나오는 문제점(?)도 없는거고요 
걱정말고 까세요. 

=> 계속 글 읽어보니깐 6.0에서 디버깅 하려고 하면 vs.net 디버깅이 뜬다거 하던데... 
뭐.. 제가 아직 설치도 안해보구 이런말 하믄 안되겠지만... 

진짜 그렇다면 상관이 없는것인가요? 아님 6.0 디버깅이 뜨게 할 수도 있는것인가요? 

=> 글쎄요..기억이 확실치 않지만 뜰때 디버거 선택할 수 있게 창이 
뜨던 것 같았는데요. 아니면...레지에서 고치면 되는데 
그건 서우석씨의 토요세미나 자료에 보면 있을 겁니다. 

=> 얼마전에 같이 깔아서 잘 사용하신 분의 
글을 봤습니다..같이 깔아 쓰셔도 될겁니다. 
저도 베타1때 같이 깔아봤는데..특별한 지장은 없더군요. 
그리고 .net msdn에도 API,MFC 설명이 나오니 
그다지 걱정안하셔도 될 겁니다. 

=> 제 컴이 6.0과 .Net Beta2 모두 깔려 있고 잘 쓰고 있습니다. 
단, 6.0 설치 후에 .Net Beta2 를 깔아야 합니다. 
순서가 바뀌면 제대로 돌지 않는다고 하더군엽.(한국 MS 에서엽) 

=> 저도 잘 사용하고 있습니다. 
6.0에서 프로그램하다가 디버깅하면 .Net 프로그램(VC++)이 실행되더라구요.. 
디버깅시 6.0에서 디버깅(자동으로) 할 수 있는 방법을 알고 싶습니다.. 
이만 꾸벅..
제주삼다수, 2L,... 오뚜기 진라면 매운... 상하목장 유기농 흰... 남양 프렌치카페 카... 고려인삼유통 홍삼 ... 종근당건강 오메가3... 요이치 카링 유무선...