_WIN32_WCE有什么用
轉(zhuǎn)載自:http://blog.csdn.net/thanklife/article/details/21477561
_WIN32_WCE有什么用,我這里找了一些人的回應(yīng)。由于目前我手頭的源碼有限,還沒(méi)有找到定義之處。先這樣保留著這個(gè)問(wèn)題吧。以下是一些別人給的認(rèn)識(shí)。
?
?
經(jīng)常看到?#ifndef?_WIN32_WCE
這是什么意思?
我想是這是提示編譯器按WINCE系統(tǒng)的接口進(jìn)行編譯
是WinCE程序在臺(tái)式機(jī)的模擬器環(huán)境下運(yùn)行的編譯選項(xiàng)
?
?
WIN32_WCE的意義
_WIN32_WCE表示是否是windows ce環(huán)境
當(dāng)前樓主肯定是編譯的不是windows ce環(huán)境,所以就沒(méi)有_WIN32_WCE定義。
?
?
關(guān)于wince版本的支持——用_WIN32_WCE來(lái)做判斷?
其實(shí)這玩意就是用來(lái)區(qū)分系統(tǒng)對(duì)某些函數(shù)的支持的。
但是我S5pv210的程序放到S3c2440 上就有問(wèn)題了,
#if _WIN32_WCE >=600
?hr =CeOpenCallerBuffer((PVOID*)&MappedBuffer, pBuffer, Count, ARG_O_PTR, TRUE);
?if(FAILED(hr))
?{
??RETAILMSG(TRUE,(TEXT("%s: Fail to map caller buffer:0x%x\r\n"), _T(__FUNCTION__), pBuffer));
??goto CleanUp;
?}
?else
?{
??pRxBuffer? = MappedBuffer;
?}
#else
?
毛病就出在這里,檢查一下,看來(lái)又要自己debug 半天了。
?
WinCE平臺(tái)的程序編譯到Win32平臺(tái)下運(yùn)行
?最近做的項(xiàng)目中,有一個(gè)在WinCE平臺(tái)上跑的程序,后來(lái)隨著項(xiàng)目的發(fā)展,要求此程序在PC上也能跑。
感謝VS 2005提供的多平臺(tái)支持,只需要幾分鐘就可以解決這個(gè)問(wèn)題,方法很簡(jiǎn)單,下面是我處理的過(guò)程。
1.在配置管理中增加新平臺(tái)
1.1 創(chuàng)建新平臺(tái)
程序最初是基于Pocket PC2003(ARMV4)平臺(tái)創(chuàng)建的,我在此平臺(tái)的配置基礎(chǔ)上,創(chuàng)建新的Win32平臺(tái)。
打開(kāi)菜單Build->ConfigurationManager,在A(yíng)ctive Solution Platform下拉選擇框中選擇New,選擇new platform為Win32,Copy settings from選擇原有配置Pocket PC 2003(ARMV4),按OK為應(yīng)用程序創(chuàng)建新的Win32運(yùn)行平臺(tái)。
1.2 修改Debug|Win32的配置
Win32平臺(tái)的配置由PPC復(fù)制而來(lái),有些參數(shù)需要進(jìn)行更改。可以在項(xiàng)目屬性中進(jìn)行修改,但直接修改工程文件可能更為直觀(guān)和簡(jiǎn)單,我是直接修改此文件。
1.2.1 修改工具VCMIDLTool中的預(yù)定義宏P(guān)reprocessorDefinitions,只保留"_DEBUG"
1.2.2 修改工具VCMIDLTool中的預(yù)定義宏P(guān)reprocessorDefinitions,改為"_DEBUG;WIN32;_WINDOWS"
1.2.3 修改工具VCResourceCompilerTool中的預(yù)定義宏P(guān)reprocessorDefinitions,只保留"_DEBUG"
1.2.4 修改工具VCLinkerTool的配置,改為
1.???????????????<Tool
2.???????????????Name="VCLinkerTool"
3.???????????????LinkIncremental="2"
4.???????????????GenerateDebugInformation="true"
5.???????????????SubSystem="2"
6.???????????????TargetMachine="1"
7.???????????????/>
1.3 修改Release|Win32的配置
1.3.1 修改工具VCMIDLTool中的預(yù)定義宏P(guān)reprocessorDefinitions,只保留"NDEBUG"
1.3.2 修改工具VCMIDLTool中的預(yù)定義宏P(guān)reprocessorDefinitions,改為"NDEBUG;WIN32;_WINDOWS"
1.3.3 修改工具VCResourceCompilerTool中的預(yù)定義宏P(guān)reprocessorDefinitions,只保留"NDEBUG"
1.3.4 修改工具VCLinkerTool的配置,改為
1.???????????????<Tool
2.???????????????Name="VCLinkerTool"
3.???????????????LinkIncremental="1"
4.???????????????GenerateDebugInformation="true"
5.???????????????SubSystem="2"
6.???????????????OptimizeReferences="2"
7.???????????????EnableCOMDATFolding="2"
8.???????????????TargetMachine="1"
9.???????????????/>
2. 修正平臺(tái)差異帶來(lái)的編譯錯(cuò)誤
2.1 stdafx.h
首先是WINVER的定義,WinCE下被定義為_(kāi)WIN32_WCE,改之:
1.???????????????#ifdefined(WINCE)
2.???????????????#define WINVER_WIN32_WCE
3.???????????????#else
4.???????????????#define WINVER0x0501 // 允許使用特定于Windows XP 或更高版本的功能。
5.???????????????#endif
然后是一些WinCE特有的頭文件和庫(kù),改為僅當(dāng)WINCE宏被定義時(shí)編譯(可能分散在不同位置):
1.???????????????#ifdefined(WINCE)
2.???????????????#include<ceconfig.h>
3.???????????????#include<altcecrt.h>
4.???????????????#include<aygshell.h>
5.???????????????#pragmacomment(lib, "aygshell.lib")
6.???????????????#endif
2.2 App類(lèi)
在xxxApp::InitInstance中,SHInitExtraControls()的調(diào)用加上宏檢測(cè),僅當(dāng)WINCE宏被定義時(shí)編譯。
1.???????????????#ifdefined(WINCE)
2.???????????????//SHInitExtraControls should be called once during your application'sinitialization to initialize any
3.???????????????// of theWindows Mobile specific controls such as CAPEDIT and SIPPREF.
4.???????????????SHInitExtraControls();
5.???????????????#endif
另外App類(lèi)的頭文件中包含了資源文件的定義,但被#ifdef POCKETPC2003_UI_MODEL宏包了起來(lái),我的程序在兩個(gè)平臺(tái)都使用同樣的資源,因此把這個(gè)宏注釋掉即可。
PS:2014-3-20,在http://download.csdn.net/detail/thanklife/7069811的文章中,我看到有在編譯器添加的預(yù)處理器定義內(nèi)容包含該項(xiàng)內(nèi)容。在第8步驟有如下預(yù)處理器定義:
“_DEBUG;_WIN32_WCE=$(CEVER);UNDER_CE......”
總結(jié)
以上是生活随笔為你收集整理的_WIN32_WCE有什么用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: XSHELL下直接下载文件到本地(Win
- 下一篇: GIS开源库shapeLib的使用方法