WIN32 手動編譯

安兒IT 發表於 2020-10-28

前言

我們編譯的相關工程目錄如下:
在這裡插入圖片描述

  1. Main.cpp 原始碼
  2. Project1.rc 資原始檔
  3. resource.h 資源標頭檔案定義

我們簡單看下原始碼Main.cpp 就是一個簡單的帶選單的UI介面程式碼

在這裡插入圖片描述

編譯cpp 為 obj

cl /c /EHsc Main.cpp

引數說明:
/c編譯不連線
/EHsc 異常處理

上述命令會把cpp的中所有標頭檔案展開,編譯成obj彙編檔案
標頭檔案的尋找優先順序:
如果是以#include<>引入的那麼首先會在環境變數中查詢。對應的環境遍歷名為 include.
筆者環境變數輸出圖:
在這裡插入圖片描述

#include"" 首先會到當前編譯的命令環境檔案目錄查詢(比如你的工程在c:/project,那麼會在c:/project下自動查詢)

如果需要指定標頭檔案位置請使用 -IXXXXXXX 引數,XXXX為標頭檔案所在目錄 如-IC:/project/includes.

編譯rc檔案

Project1.rc 檔案是WIN32定義資源的檔案,你可以使用rc編譯器編譯成字尾為xxx.res的檔案

如下圖
在這裡插入圖片描述

在這裡插入圖片描述

連結

link /subsystem:windows User32.lib Main.obj Project1.res

/subsystem:windows 告訴連結器生產一個win32介面程式
User32.lib 由於我們使用了windows相關函式所以必須告訴編譯器其編譯後庫檔案

連結相關庫檔案位置說明:
如果沒有說明具體的庫檔案位置那麼將會將會從環境變數LIB從查詢
在這裡插入圖片描述

link連結相關文件
資源編譯器文件
cl編譯器文件