c++ - microsoft - 下載visual studio




使用Visual Studio 2005為Windows NT 4.0構建? (4)

我嘗試遷移的MFC應用程序使用afxext.h ,這會導致_AFXDLL進行設置,如果設置了/MT ,會導致此錯誤:

請使用/ MD開關_AFXDLL生成

迄今為止,我的研究表明,使用Visual Studio(本例中是C ++)2005,在Windows NT 4.0上構建一個應用程序是不可能的。

這是真的嗎? 有沒有可用的解決方法?


不,使用VS2005構建的許多應用程序必須支持Windows XP,2000,NT,整個堆棧。 問題是(默認情況下)VS2005希望使用庫/出口不在NT上。

看到這個線程的一些背景。

然後通過預處理器宏開始限制你的依賴關係,避免在NT上不支持的API。


為了擺脫_AFXDLL錯誤,您是否嘗試更改為使用MFC作為靜態庫而不是DLL的設置? 這與您將運行時庫更改為靜態而不是DLL時所做的相似。


這個想法是,exe需要鏈接到靜態庫。

請嘗試使用“配置屬性”,“常規”,“使用MFC”,“在靜態庫中使用MFC”,“配置屬性”,“常規”,“使用ATL”,“靜態鏈接到ATL”

“配置屬性”,“C \ C ++”,“代碼生成”,“運行時庫”到“多線程(\ MT)”

測試平台構建計算機:Window XP SP2客戶端計算機上的Visual Studio 2005:Window XP SP2(未安裝VS2005)


雖然我不熟悉afxext.h,我想知道它是什麼使它與Windows NT4不兼容....

但是,要回答最初的問題:“迄今為止我的研究表明,使用Visual Studio(本例中為C ++),在Windows NT 4.0上構建一個應用程序是不可能的。”

答案應該是肯定的,特別是如果應用程序最初編寫或運行在NT4上! 除了afxext.h之外,這應該是一個簡單的YES。

另一件我覺得麻煩的事情是人們放棄新台幣的寬鬆性質。 大多數人認為'NT'是Windows NT4,但是它仍然是模糊的,因為'大多數人'不等於'所有人'。

實際上,“新台幣”一詞等於新台幣系列。 NT系列是NT3,NT4,NT5(2000,XP,2003)和NT6(Vista)。

Win32是你的C / C ++代碼的子系統。 所以我沒有看到為什麼一個人不應該能夠定位這個NT4平台和子系統,或者如果這是一個平台移植練習,請刪除VC可能強加的MFC依賴關係。

添加afxext.h到混音,這聽起來像一個子系統的兼容性問題。 這是我的Google研究中的MFC的一部分。 afxext.h似乎是MFC(Microsoft基礎類)擴展名。

你可以刪除你對MFC的依賴嗎? 這是什麼類型的應用程序? (CLR,服務,GUI界面?)你可以將項目轉換為VC 8.0中的非託管C ++項目嗎?

希望有一些這將幫助你。





windows-nt