抽取VS檔案組成類GCC的編譯器並編譯C程式為dll動態連結程式庫

來源:互聯網
上載者:User

用慣了linux下的GCC編譯工具,倒喜歡起命令列的方式編譯連結C程式,居然還發現我裝的VS工具沒看到直接編譯C程式的工具(我不太熟悉這個)。VS的編譯檔案命令是cl,連結命令是link。參考了網上資料,採用提取VS的編譯器檔案組成一個可以命令列方式編譯器的工具。以下為步驟:

1,在自己目錄建立檔案夾,如:D:/vctool;

2,將VS安裝目錄下的VC目錄下的bin、lib、include目錄考到vctool目錄下;

3,將c:/Program Files/Microsoft SDKs/Windows/V6.0A(或類似目錄,亦是VS的安裝檔案)下的Lib目錄拷到vctool目錄下,並記得不要覆蓋而是重新命名為sdklib;

4,現在所需的命令檔案和類庫、include檔案都拷過來了,將bin目錄加到環境變數path中;

5,接下來可以編寫c語言檔案 Test.c:

#include "stdio.h"        __declspec(dllexport) int sum(int a, int b)    {            return a + b;    }

5,編寫編譯檔案:build.bat:

set PATH=./;D:/vctool/bin;%path%set INCLUDE=D:/vctool/includeset LIB=D:/vctool/lib;D:/vctool/sdklib    cl /c Test.clink /dll Test.objpause

6,雙擊運行build.bat,發現編譯錯誤,找不到mspdb80.dll檔案:

於是在VS安裝目錄下搜尋,將該檔案拷貝到vstool/bin目錄下;再雙擊build.bat編譯,編譯成功,目錄下已產生:

Test.dll Test.lib Test.obj

若連結的時候出現 LINK: fatal error LNK1104:無法開啟檔案“kernel32.lib” 錯誤,則是因為sdklib沒拷對或者沒設到環境變數LIB(build.bat)

以下為網上找到的相關資料:

2.下面詳細介紹下cl命令:

cl.exe 是控制 Microsoft C 和 C++ 編譯器與連結器的 32 位工具。編譯器產生通用物件檔案格式 (COFF)

對象 (.obj) 檔案。連結器產生可執行檔 (.exe) 或動態連結程式庫檔案 (DLL)。

注意,所有編譯器選項都區分大小寫。

相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。