WIN32 手動編譯
前言
我們編譯的相關工程目錄如下:
- Main.cpp 原始碼
- Project1.rc 資原始檔
- 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
從查詢
相關文章
- 自己動手編譯OpenJDK編譯JDK
- ubuntu手動編譯lampUbuntu編譯LAMP
- 自己動手編譯OpenSSL庫編譯
- 自己動手編譯NodeMCU韌體編譯
- 越獄手記:手動編譯安裝 Electra編譯
- centos手動編譯安裝apache、php、mysqlCentOS編譯ApachePHPMySql
- 前端開發模式:被動編譯和主動編譯前端模式編譯
- ffmpeg為視訊新增時間戳 - 手動編譯ffmpeg時間戳編譯
- apache動態編譯/靜態編譯區別Apache編譯
- java動態編譯Java編譯
- [翻譯]Billy Belceb 病毒編寫教程for Win32 ----病毒編寫中的有用的東西Win32
- Android NDK 提供的交叉工具鏈手動編譯原始碼Android編譯原始碼
- 自己動手編譯播放器MPC-HC的原始碼編譯播放器原始碼
- Billy Belceb 病毒編寫教程for Win32 ----Win32優化Win32優化
- Billy Belceb 病毒編寫教程for Win32 ----Win32多型Win32多型
- 編譯lua動態庫編譯
- 動態編譯JAVA程式編譯Java
- Qt編譯MySQL驅動QT編譯MySql
- Java動態編譯優化——提升編譯速度(N倍)Java編譯優化
- Win32彙編教程二 Win32彙編程式的結構和語法 (轉)Win32
- Billy Belceb 病毒編寫教程for Win32 ----Win32 反除錯Win32除錯
- [譯] 如何手動啟動 Angular 程式Angular
- 精讀《手寫SQL編譯器-回溯》SQL編譯
- C語言編譯器手機版C語言編譯
- 手撕Vue-編譯指令資料Vue編譯
- Billy Belceb 病毒編寫教程for Win32 ----高階Win32技術Win32
- iOS自動化編譯打包iOS編譯
- 手寫 Vue2 系列 之 編譯器Vue編譯
- JNI學習筆記之ndk-build手動編譯並整合流程筆記UI編譯
- Dubbo原始碼之動態編譯原始碼編譯
- Java動態編譯和熱更新Java編譯
- nginxphp動態編譯載入模組.NginxPHP編譯
- Window下 Qt 編譯MySQL驅動QT編譯MySql
- oracle 失效物件自動重新編譯Oracle物件編譯
- mongodb c++ 驅動庫編譯MongoDBC++編譯
- 基本概念(win32)彙編教程(轉)Win32
- Win32彙編教程十二 管道操作 (轉)Win32
- Java編譯與反編譯Java編譯