從VC6 0平台級到VS2008平台 之一

2021-05-04 05:28:56 字數 2411 閱讀 3136

vc6.0

平台級到

vs2008

平台最近在在把一些程式從

vc6遷移到

vs2008

,由此而關注到一些這方面的知識,找了一些資料,根據自己遇到的一些情況,結合在一起,整理出來這篇文章,希望對以後有這方面工作的人多一些參考,如果大家還有可很享的可以跟貼。。。。

提到這個問題是因為,這裡涉及到

winodws

版本的定義。關於版本定義的關鍵無外乎為程式標頭檔案中對於

#define winver

和#define _win32_winnt

的使用,具體為:

#define winver 0***xx

#define _win32_winnt 0***xx

該定義一般用於標示程式對執行環境的要求,另外在某些標頭檔案中也有這樣的巨集定義。如果版本匹配的話就會在編譯的時候將這些內容編譯,否則就不編譯。

定義正確的

windows

版本,不僅關係到程式的正確編譯,同時也關係到程式的正確執行;在公升級的過程中,我就碰到了程式編譯正確但執行出錯的問題。

版本的定義關係到被編譯到程式中的內容,這裡主要是指系統提供的功能**。

windows

各個版本的功能雖然大差不差,但特定於某個系統功能還是存在的,於是關係到這些功能的

api**也就有所不一樣。當我們在程式中定義了錯誤的系統版本,被編譯程序式的內容便可能包含當前系統不支援的**片段,這樣的程式即使可能正確編譯通過,但在執行的時候,由於在當前系統中找不到相應的內容資源,從而發生錯誤。這一點熟悉動態鏈結庫

(dll)

的人都很清楚,其實該問題就是和系統動態鏈結庫有關。

考慮到我遷移程式的時候,是直接利用

vs2008

將vc6

程式轉化的方式,然後按

vs2008

新建專案的

stdafx.h

檔案內容更新了原來的

stdafx.h

標頭檔案,並新增了

vs2008

專案才有的

targerver.h

標頭檔案。

(工程轉換時,沒有

targerver.h

為我們生成,預設的

winver = 0x0600

的系統環境(這裡指明了系統為

vista

),所以要改變就要自己手動新增

targerver.h)

根據targetver.h

標頭檔案裡的下列定義:

#ifndef winver// 

指定要求的最低平台是

windows vista

#define winver 0x0600// 

將此值更改為相應的值,以適用於

windows

的其他版本。

#endif

#ifndef _win32_winnt//

指定要求的最低平台是

windows vista

#define _win32_winnt 0x0600// 

將此值更改為相應的值,以適用於

windows

的其他版本。

#endif

ps

:0×0500

表示windows 2000

,0×0501

為windows xp

,0×0502

為windows server 2003

,0×0600

為windows vista

2

、關於dx8sdk

使用中link

時出現的

libci.lib

無法找到的問題

最近開發過程中碰到了用

dx8 sdk

編譯專案時,在

link

的時候,

無法開啟

libci.lib

的問題.

link:fatal error  lnk1104:

無法開啟檔案

:libci.lib"

解決辦法如下:

選擇工程的屬性,在

linker

選項中選擇

command line ,

增加下面一行:

/nodefaultlib:libci 

原因:出現在vc9中,

可能沒有選擇

「安裝舊的

iostream庫」.

導致這個問題

.在我看來

,還是微軟的問題

.

從VC6 0平台級到VS2008平台 之一

從vc6.0平台級到vs2008平台 最近在在把一些程式從vc6遷移到vs2008,由此而關注到一些這方面的知識,找了一些資料,根據自己遇到的一些情況,結合在一起,整理出來這篇文章,希望對以後有這方面工作的人多一些參考,如果大家還有可很享的可以跟貼。提到這個問題是因為,這裡涉及到winodws版本的...

VS2008與VC6 0的變化

1.messagebox vc 6.0 messagebox hello,world vs2008 messagebox l hello,world 或 messagebox text hello,world 2.combo box內容新增方法 vc 6.0 drop down list box c...

VS2008與VC6 0的變化

1.messagebox vc 6.0 messagebox hello,world vs2008 messagebox l hello,world 或 messagebox text hello,world 2.combo box內容新增方法 vc 6.0 drop down list box c...