2015-06-13 136 views
0

當涉及到32位和64位所有Windows平臺的可移植性時,我應該關心什麼? 更重要的是,如果有必要使用Windows API,我應該有什麼好習慣?32位和64位所有Windows平臺上的可移植性

+0

您是否考慮過使用像[Qt](http://qt.io)或[POCO](http://pocoproject.org/)這樣的框架庫? –

+0

沒有這些外部庫或Boost。 – Collapsed

+0

.NET怎麼樣? ..否則,你究竟在做什麼?基於WindowsNT的平臺(來自2k +)支持相同的基本WinAPI,即使這樣,您仍然(通常)需要將您的MSVCXXX.dll與您的應用程序一起分發,除非您知道它與您所針對的系統或靜態鏈接一起安裝。您是否打算使用CRT,MFC,GDK,DirectX或其他任何Windows API/SDK技術?確定你的目標,答案可能會更清晰。 – txtechhelp

回答

0

不知道C++,但有一個簡單而直接的解決方案。 將32位和64位構建放在一個目錄中。並且將這個bat文件放在那裏。

IF "%PROCESSOR_ARCHITECTURE%"=="AMD64" GOTO x64 
IF "%PROCESSOR_ARCHITEW6432%"=="AMD64" GOTO x64 
IF "%PROCESSOR_ARCHITECTURE%"=="x86" GOTO x86 
:x86 
START "" build32.exe %1 
GOTO arcselend 
:x64 
START "" build64.exe %1 
:arcselend 
exit 

即使你想後執行動作(程序退出後)做的也歡迎

IF "%PROCESSOR_ARCHITECTURE%"=="AMD64" GOTO x64 
IF "%PROCESSOR_ARCHITEW6432%"=="AMD64" GOTO x64 
IF "%PROCESSOR_ARCHITECTURE%"=="x86" GOTO x86 
:x86 
START "" /W build32.exe %1 
GOTO arcselend 
:x64 
START "" /W build64.exe %1 
:arcselend 

:: Do something here like 
DEL /F/Q "-PATH-\sometempfile.tmp" >NUL 2>NUL 

exit 

你不想讓身邊的蝙蝠文件? Here我們有一個bat 2 exe編譯器,佔用空間非常小。在您可以定義的設置中,也可以使用提升的權限啓動您的應用程序。

注意:使用相對路徑(當然),如果您有任何關於路徑的問題,請在此處填寫。會有另一個簡單的解決方案。