[완료] Windows SDK 와 VS 2005, VS 2008 그리고 v5.0과 v6.1 의 차이?

kleinstein의 이미지

아.. 정말 며칠동안 웹사이트를 뒤지다가 결국 못찾고 이곳에 문의합니다. 어떤 힌트라도 좋으니 꼭 좀 댓글 부탁드릴께요.

VS2005 로 프로젝트를 하나 개발했습니다.

그러는 사이에 VS2008 가 나와서 업그레이드 했지요..

Windows SDK 라는것도 알게되어서 역시 최신 버전으로 업데이트했구요. (정식 명칭이 대략 Windows SDK for Windwos Server 2008 and .NET Framework 3.5 이랬던것 같습니다.)

그런데 VS2005 에서 잘 컴파일되고 하던 프로젝트가 VS2008로 불러들여서 변환한 다음 (변환시 에러도 없었습니다.) 컴파일 하니까..

아주 엉뚱한곳에서 에러메세지를 내밷네요..

C:\Programme\Microsoft SDKs\Windows\v6.1\Include\winbase.h(13993) : error C2059: syntax error: 'constant'

뭐 대략 이런식의 에러를 무수히 쏟아내는데요..

하다하다 결국 Visual Studio 2008 의 설정에서 include 를 설정하는 곳에서

C:\Programme\Microsoft SDKs\Windows\v6.1\include 이렇게 설정되어 있던걸

C:\Programme\Microsoft SDKs\Windows\v5.0\include 이렇게 바꿔주니까 컴파일이 잘 됩니다.

그런데 가만보니까.. 결국 최신 Windows SDK 가 적용이 아예 안된게 아닐까 하는 생각이 들더라구요.. 6.1 이 최신버전인데 5.0이면 이미 오래된게 아닐까요?

사실 이 두 버전의 차이를 잘 모르겠습니다만..

만약 Windows 7 이 올해말에 나오면..

5.0 으로 컴파일했다가 Windows 7에서는 안돌아가는거 아닌가 싶기도 하구요.

도대체 Windows SDK 를 설치한다음 볼수있는

Microsoft SDKs/Windows/v6.1/include 와 Microsoft SDKs/Windows/v5.0/include 의 차이는 뭔가요?

아 궁금해 미치겠습니다.

kite7의 이미지

저라면 아직 잘 모를때는 2005를 그냥 쓸것 같습니다. VS2005랑 VS2008 이랑 그닥 큰 차이 없던거 같은데.

그 TR1 인가 그거 추가 된거 말고는 입문 하실때는 거의 차이 못느끼실겁니다.
2005 컴파일러도 충분히 품질 좋은거로 알고 있구요.

그리고 sdk는 안까셔도 vs2005express 버전만 아니면 api들 다 쓸수 있는것으로 알고 있습니다.

다 지우시고 간단하게 VS2005혹은 VS2008 하나만 설치해서 쓰세요.

그리고 윈7 나와도 다 돌아갈겁니다.

질문 하신 것에 정확한 답변은 아니지만 우선 프로그래밍을 할 수 있는 환경이 중요하므로,,

snowall의 이미지

MSDN에서 검색해보면 뭔가 나올 것 같은데요

--------------------------
피할 수 있을때 즐겨라!
http://snowall.tistory.com

피할 수 있을때 즐겨라! http://melotopia.net/b

Necromancer의 이미지

님 말씀하신 Windows SDK는 닷넷인거 같네요.
네이티브 윈도우 프로그램(Win32API 사용)은 Platform SDK를 쓰고요. vs 깔면 안에 들어 있습니다.

보통은 안깔아도 되지만 가끔가다 해당 버전에서 지원 안되는거 쓰는 프로그램 있다면 깔아줘야 합니다.
예를 들자면 vs6.0은 Platform SDK 별도로 안깔면 ie5 설치후에 사용가능한 몇몇 SHxxxx 함수들이 들어간 코드를 컴파일 못합니다 -_-;

Written By the Black Knight of Destruction

Written By the Black Knight of Destruction

kleinstein의 이미지

또 며칠간 조사를 좀 해봤습니다..
이 부분에 대해서 알고 계신 분이 이렇게 없나 싶을 정도로 이 부분을 잘 파악하고 계신분이 없는것 같네요..

국내의 블로그들도 검색해봤지만.. 거의 정보가 없구요..
일단 제가 알아낸것 까지만 이곳에 적어봅니다.

잘 알고 계시다시피 헤더파일, 라이브러리, 사용예제에서 설명서까지 포함되어있는 소위 말하는 개발도구라고 하는것이 SDK 입니다.

Platform SDK 이던 Windows SDK 이던간에 이런 SDK 는 Visual Studio 와 함께, 또 계속해서 나오는 새로운 OS 와 함께 계속해서 업그래이드가 있어왔습니다.

더구나 .NET 이 생겨나면서 더더욱 기존의 SDK 와는 분리가 있어왔구요.

.NET 이 생겨나면서 기존의 C++ 는 unmanaged code 라고 불리고 .NET 기반의 C++ 는 managed code 라고 불리면서 더욱더 헤더파일과, 라이브러리 등이 분리될수밖에 없는 지경에 이르렀다고 합니다.

이런 역사와 함께 Visual Studio 가 설치될때 함께 설치되던 SDK 가 분리되어 배포되기도 했다가 이름이 바뀌기도 했다가,

결국 현재는 Windows SDK for XXX 라는 이름으로 여러가지 window 의 버전에 따라서 XXX 부분에 들어가는 이름이 다른 상태로 배포되고 있습니다.

VS2008 을 설치하면 제가 알기로는 v6.0 의 SDK 가 같이 설치되고 VS2008 SP1 일 경우에는 v6.0A 버전의 SDK 가 같이 설치되며,

가장 최근의 따로 배포되고 있는 Windows SDK for Windows Server 2008 and .NET Framework 3.5 를 설치할 경우는 v6.1 의 SDK가 설치되는걸로 알고 있습니다.

Windows SDK가 일단 어떤 경로를 통해서든 설치되면 이와 동시에 v5.0 버전도 같이 설치되는데..

이건 단지 Itanuim 64 비트 버전의 window 만을 위한 헤더와 라이브러리 라고 하는걸 어디선가 읽었습니다.

웬만한 window 끼리는 다 호환이 되기때문에 v5.0 버전으로 컴파일, 링크 된 프로그램도 아마 다른 window, 즉 XP 나 2003 등에서 돌아갈지도 모르지만..

XP와 VISTA 그리고 곧 나올 Window 7 에서 주로 쓰일 프로그램인데 이걸로 컴파일 하는건 좀 아니다라는 생각이 드네요..

뭐.. 이까지가 대략 제가 알아낸겁니다만..

물론 일부분 잘못 이해했을 가능성이 아주 높습니다.

조금이라도 더 알고계신분을 꼭 댓글로 고쳐주시구요..

처음부터 제가 궁금했던건..

VS2005 Platform SDK 를 이용해서 unmanaged C++ 로 만든 제 프로그램 코드가 왜 V6.1 버전의 SDK 로는 컴파일되지 않는건지에 대한 궁금증입니다.

v6.1 버전으로 컴파일하는것이 마이크로 소프트 사의 MSDN 을 찾아본 결과 XP와 VISTA 그리고 곧 나올 Window 7 에서 주로 쓰일 프로그램을 위해 unmanaged 이던 managed이던 간에 모두

함께 사용해야할 "정식버전" 이라고 하길래 더 궁금한 마음입니다.

cjh의 이미지

http://junyoung.tistory.com/archive/200808

--
익스펙토 페트로눔

--
익스펙토 페트로눔

kleinstein의 이미지

정확한 해답을 찾았네요.

v6.0a includes the Vista-level Windows headers and libraries, tools and reference assemblies that should be used on X86 and X64 architectures.
These components install by default to: C:\Program Files\Microsoft Windows SDKs\Windows\v6.0a.


v5.0 includes the Server 2003-level Windows headers and libraries that should

be used on IA64 architectures. These components install by default to: C:\Program Files\Microsoft Windows SDKs\Windows\v5.0. You should not use the v5.0 SDK resources unless you are developing on or for IA64.

The Windows SDK for Server 2008 and .NET Framework 3.5 standalone SDK is v6.1. It includes the Server 2008-level Windows headers, libraries, tools, to be used on all architectures (X86, X64, IA64), along with a command line SDK build environment, compilers, samples and documentation. It also includes .NET Framework 3.5 tools, documents, and samples. It installs by default to C:\Program Files\Microsoft Windows SDKs\Windows\v6.1.

그리고 문제가 되었던건.. 3rd Party 라이브러리 중 하나가 Window SDK 로 컴파일 되지 않았던 게 원인이었습니다.

이제야 모든게 좀 명확해 졌네요..

cjh님/ 좋은 링크 감사합니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.