windows命令行下通过cl命令编译动态链接库示例
? ? 一般在windows下寫(xiě)一個(gè)c/c++的動(dòng)態(tài)鏈接庫(kù),我們都是在visual studio或著visual c++這些ide里面進(jìn)行編譯和生成的,今天介紹,如何通過(guò)命令行來(lái)實(shí)現(xiàn)手動(dòng)編譯和生成動(dòng)態(tài)鏈接庫(kù)。
? ? 首先,確保我們的系統(tǒng)中安裝了visual studio 2019或著其他版本,這樣,我們才可以使用命令行工具。
? ? 開(kāi)始->程序里面找到visual studio 2019這個(gè)文件夾,里面有命令行工具。找到"x64 Native Tools Command Prompt for VS 2019",然后點(diǎn)擊,打開(kāi)一個(gè)cmd命令行。
? ??
? ? 我們準(zhǔn)備我們的兩個(gè)簡(jiǎn)單的程序,一個(gè)是動(dòng)態(tài)庫(kù),一個(gè)是調(diào)用動(dòng)態(tài)庫(kù)的程序:
? ? test.c
#include <stdlib.h> __declspec(dllexport) int add(int a,int b) {return a + b; }? ? main.c
#include <stdio.h> extern int add(int a,int b);int main(){int i = add(1,2);printf("add(1,2)=%d\n",i);return 0; }? ? 開(kāi)始編譯:
cl -c test.c? ? 在打開(kāi)的cmd命令行中,切換到我們的項(xiàng)目目錄下,然后運(yùn)行cl指令:
? ? ?
? ? 該命令執(zhí)行之后,會(huì)生成一個(gè)test.obj文件,接著,我們運(yùn)行鏈接命令:? ?
link -dll -out:test.dll test.obj? ? ?
? ? 從命令上,我們可以看出,會(huì)生成動(dòng)態(tài)鏈接庫(kù)test.dll,其實(shí),同時(shí)還會(huì)生成test.lib,test.exp文件。
? ??
-----------------------------------------------------------
? ? 以上兩步操作,其實(shí)可以通過(guò)一個(gè)命令來(lái)完成,就是:
cl /LD test.c? ? ?
? ? 該命令可以直接生成動(dòng)態(tài)鏈接庫(kù)dll。
? ? 我們還可以通過(guò)dumpbin命令,查看生成的動(dòng)態(tài)庫(kù)的信息:
dumpbin -exports test.dll? ? ?
? ? ?有了動(dòng)態(tài)鏈接庫(kù),我們接著利用這個(gè)動(dòng)態(tài)鏈接庫(kù)來(lái)生成main可執(zhí)行程序。
cl main.c test.lib? ? 運(yùn)行該命令,會(huì)生成main.exe程序,在命令行下,可以直接運(yùn)行:main,就可以看到打印結(jié)果:
? ??
? ? 以上就是在命令行下編譯生成動(dòng)態(tài)鏈接庫(kù)的過(guò)程,如果你的系統(tǒng)里面沒(méi)有cl指令,可能是沒(méi)有安裝visual studio或者visual c++,如果安裝了,進(jìn)入他自帶的命令行工具,就有這些命令了。
總結(jié)
以上是生活随笔為你收集整理的windows命令行下通过cl命令编译动态链接库示例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: PHS是什么
- 下一篇: 太原网络营销师揭秘每个老板最头疼的百度竞