命令行下編譯帶圖標的C++程序

當人們習慣了IDE編程的時候,將會失去一些命令行下編程的快樂和強的。

言歸正傳,首先我們先編寫源文件,資源腳本,準備資源(圖標)

我們準備寫一個源文件:

Makelove.cpp

#include <iostream>
 using namespace std;
int main()
{
    cout<<"Helloworld!"<<endl;
    return 0;
}
在準備一個資源腳本:

IDI_ICON1       ICON     "Makelove.ico"
IDI_ICON2       ICON     "mkl.ico"
好吧,圖標準備沒有。

那麼久開始吧;

你最好有一個VC++套件 至少是Express版本,VER>=2005
一般說來你安裝VC後會有一個vcvarsall.bat腳本,已經設置好了各種環境變量。如果沒有請插入:

@SET VSINSTALLDIR=C:\Program Files\Microsoft Visual Studio 9.0
@SET VCINSTALLDIR=C:\Program Files\Microsoft Visual Studio 9.0\VC
@SET FrameworkDir=C:\Windows\Microsoft.NET\Framework
@SET FrameworkVersion=v2.0.50727
@SET Framework35Version=v3.5
@if "%VSINSTALLDIR%"=="" goto error_no_VSINSTALLDIR
@if "%VCINSTALLDIR%"=="" goto error_no_VCINSTALLDIR

@echo Setting environment for using Microsoft Visual Studio 2008 x86 tools.

@call :GetWindowsSdkDir

@if not "%WindowsSdkDir%" == "" (
	set "PATH=%WindowsSdkDir%bin;%PATH%"
	set "INCLUDE=%WindowsSdkDir%include;%INCLUDE%"
	set "LIB=%WindowsSdkDir%lib;%LIB%"
)


@rem
@rem Root of Visual Studio IDE installed files.
@rem
@set DevEnvDir=C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE

@set PATH=C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE;C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN;C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools;C:\Windows\Microsoft.NET\Framework\v3.5;C:\Windows\Microsoft.NET\Framework\v2.0.50727;C:\Program Files\Microsoft Visual Studio 9.0\VC\VCPackages;%PATH%
@set INCLUDE=C:\Program Files\Microsoft Visual Studio 9.0\VC\ATLMFC\INCLUDE;C:\Program Files\Microsoft Visual Studio 9.0\VC\INCLUDE;%INCLUDE%
@set LIB=C:\Program Files\Microsoft Visual Studio 9.0\VC\ATLMFC\LIB;C:\Program Files\Microsoft Visual Studio 9.0\VC\LIB;%LIB%
@set LIBPATH=C:\Windows\Microsoft.NET\Framework\v3.5;C:\Windows\Microsoft.NET\Framework\v2.0.50727;C:\Program Files\Microsoft Visual Studio 9.0\VC\ATLMFC\LIB;C:\Program Files\Microsoft Visual Studio 9.0\VC\LIB;%LIBPATH%

@goto end

:GetWindowsSdkDir
@call :GetWindowsSdkDirHelper HKLM > nul 2>&1
@if errorlevel 1 call :GetWindowsSdkDirHelper HKCU > nul 2>&1
@if errorlevel 1 set WindowsSdkDir=%VCINSTALLDIR%\PlatformSDK\
@exit /B 0

:GetWindowsSdkDirHelper
@for /F "tokens=1,2*" %%i in ('reg query "%1\SOFTWARE\Microsoft\Microsoft SDKs\Windows" /v "CurrentInstallFolder"') DO (
	if "%%i"=="CurrentInstallFolder" (
		SET "WindowsSdkDir=%%k"
	)
)
@if "%WindowsSdkDir%"=="" exit /B 1
@exit /B 0

:error_no_VSINSTALLDIR
@echo ERROR: VSINSTALLDIR variable is not set. 
@goto end

:error_no_VCINSTALLDIR
@echo ERROR: VCINSTALLDIR variable is not set. 
@goto end

:end

根據版本設置,這是Visual Studio 2008的


打開vsvars32.bat

跳轉到程序目錄。

Step1輸入命令 : cl /c  Makelove.cpp 

生成  Makelove.obj

Step2:輸入命令 :rc Makelove.rc

生成編譯後的資源文件 Makelove.res

注意 cl /c是編譯不連接,沒有/c直接生成可執行文件

Step3:輸入命令:link Makelove.obj Makelove.res

回到你的目錄是不是生成一個有圖標的控制檯程序。

###注意::

如果是Win32程序,直接編譯時需要 +kernel32.lib gdi32.lib user32.lib  

上述還可以使用以下步驟。

rc Makelove.rc;

cl Maklove.cpp Makelove.res;
好吧,上圖片


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章