윈 도 우 C++와 윈도우7x64하고의 호환에 대해서 고수님들께 여쭤봅니다
2011.10.13 20:01
C++
API를 그동안 XP에서 사용해오다가
윈도우7 64비트로 업그레이드 한 후 API가 작동을 안하는데요
운영체제 낮가림하는건가요?
혹시 윈도우7 32비트로하고 메모리 4기가 이상 인식가능하게 하고서 XP에서 사용하던
API를 그대로 사용해도 돌아가는지 궁금합니다
댓글 [4]
-
초월신 2011.10.13 20:19 -
수채화 2011.10.13 21:24
초월신님 진정한 고수의 내공이 느껴집니다. ㅎㅎ 저도 궁금했던 점인데 답변 감사드립니다.
-
서페이스 2011.10.13 22:03
이 부분은 좀더 세심하게 고민해볼 필요가 있는듯 싶네요 답변 감사했습니다
-
Sone 2011.10.14 00:31 제 의견으로는 API가 작동을 안한다기보다는, 코드상의 문제가 있을 가능성이 높습니다.
실행파일 맵핑주소가 0x400000부터 안깔리는것은 , ASLR이라는 기법때문인데, 이것은 윈도우비스타부터 적용되어왔었고, 그와 더불어서 PE파일구조체에도 IMAGE_DLLCHARACTERISTICS_DYNAMICBASE 라는 항목이 새로 추가되었습니다.
XP는 OS에서 저 항목을 지원하지 않기때문에 , 이미지베이스가 Random하게 깔리지 않는것이죠.
VS2008부터 빌드할때 , DYNAMICBASE 옵션을 꺼주면 , ImageBase가 Random하게 깔리지 않습니다.
번호 | 제목 | 글쓴이 | 조회 | 등록일 |
---|---|---|---|---|
[공지] | 질문과 답변 게시판 이용간 유의사항 | gooddew | - | - |
26263 | 하드웨어| 캠 | 섬세한분 | 1645 | 10-14 |
26262 | 윈 도 우| 노트북에 붙어있는 윈도우 제품키는 OEM용인가요? [3] | slimart | 2843 | 10-14 |
26261 | 소프트웨어| 블루레이 리먹스 [1] | 그냥그대로 | 3071 | 10-14 |
26260 | 소프트웨어| 트루 이미지 사용해서 윈도우즈 복원시 옵션 질문 [2] | kekero | 2146 | 10-13 |
26259 | 소프트웨어| 중요한 내용 보관할만한 프로그램 뭐 있을까요.. [3] | 코나 | 1692 | 10-13 |
26258 | 하드웨어| 내 SSD 괜찮나요? [8] | 현민수 | 2245 | 10-13 |
» | 윈 도 우| C++와 윈도우7x64하고의 호환에 대해서 고수님들께 여쭤봅니다 [4] | 서페이스 | 2405 | 10-13 |
26256 | 윈 도 우| 혹시 링크의 프로그램 있는곳 좀 알수 있을까요? [4] | 안희용 | 4864 | 10-13 |
26255 | 윈 도 우| 1394카드가 설치가안되네요. | 쭌쭌 | 2263 | 10-13 |
26254 | 하드웨어| 실외 안테나(UHF)로 HDTV 보시는분 있으신가요? [5] | hskdl | 2444 | 10-13 |
26253 | 윈 도 우| 인터넷 창이 꺼집니다. ㅠ [8] | 쭌쭌 | 3850 | 10-13 |
26252 | 서버 / IT| 과분한 꿈인가요...ㅋ [5] | publicstaticvoidMain() | 2629 | 10-13 |
26251 | 윈 도 우| Vincent 4.1 버전 IE8 삭제 할수 있나요? [2] | 식이s | 2457 | 10-13 |
26250 | 하드웨어| CPU 문의 드립니다. [4] | 블랙쎄라 | 1936 | 10-13 |
26249 | 서버 / IT| windows server 구매 관련 질문입니다. [1] | 캉디드 | 2640 | 10-13 |
26248 | 윈 도 우| 네트워크 및 공유 센터 문제... | robotka | 2473 | 10-13 |
26247 | 하드웨어| 재즈까페님게서 올려주신 사진(USB 포트제작에 관련)에 대... [7] | chobo | 2059 | 10-13 |
26246 | 하드웨어| AMD FX6100/FX8120은 기존의 AM3소켓에서 사용가능한지요 [1] | 가난한사람 | 2185 | 10-13 |
26245 | 윈 도 우| 동영상볼때 Windows Media Player 만 쓰는데.. 어떤 코덱이... [9] | 꼬마야 | 2735 | 10-13 |
26244 | 하드웨어| [ 노트북 고장.... ] [5] | GanJeStorm | 1928 | 10-13 |
Windows에서 Win32 API가 호환되지 않을수는 없습니다. (그건 곧 MS가 멸망하는 길이죠.)
MFC나 QT 등의 GUI 라이브러리도 결국은 Win32 API를 사용하지 않고는 동작할 수 없기 때문이죠.
네이티브 API를 쓰는 경우도 있긴 하겠으나 (NTDLL.DLL을 바로 갖다 쓰는 형태)
Win32를 쓰면 되는데 굳이 네이티브API를 직접 불러다가 불편하게 OS버전 체크해 가면서 써야할 이유가 없죠.
물론 일부 Win32 함수의 경우, 구조체 크기가 다르거나 한 경우는 있지요.
하지만 어차피 그냥 확장되었을 뿐이고, 기존 구조체의 사용법이 달라지는건 아닙니다.
그리고, 제가 보기엔 프로그래머 입장에선 Win7의 32비트 버전의 Win32 서브셋 보다
오히려 Win7 64비트의 WoW64에 포팅되어있는 Win32 서브셋이 하위호환이 더 잘 됩니다.
일례로, 윈7 32비트에서 UAC 켜 두면 실행파일 맵핑 주소가 0x400000가 아니라, 실행할 때 마다
달라지게 되더군요. 근데 윈7 64비트에선 그런게 없는것 같습니다.
아마도 코드인젝션을 방지하기 위해서 그렇게 만든것 같던데, 이게 비스타32비트 부터 적용된걸로 압니다.
근데 wow64 서브셋에는 그게 구현되어 있지 않은것 같더군요.
결론 : 제가 보기엔 호환에 문제가 없으니, 소스코드를 다시 확인해 보세요.
아니면 Windows SDK의 버전이 낮아서 그럴 수도 있으니, SDK를 업뎃 하시거나, 툴을 더 최신으로 바꾸세요.
제가 예전에 VS6로 했을땐 SDK도 2003년껀가 썼는데도 윈7에서 잘 돌아가던데 말입니다......