Windows下Cmake與VS聯合制作dll
接觸大的專案,鋪天蓋地的程式碼總是會掩蓋了開發環境和工具的本質,上手之前,跑跑小的歷程有助於對專案的理解,提高效率。
- 首先記錄一下 dll(動態連結庫)的生成過程:
建立資料夾
Execise_CmakeDLLgitGtest
建立兩個子資料夾和文字檔案
build lib
CmakeLists.txt
CmakeLists.txt如下:
PROJECT(ALULIB)
ADD_SUBDIRECTORY(lib)
build是cmake的執行目錄,會在其中生成執行cmake指令後的一些檔案,執行之前是空的。
lib下存放準備生成dll的原始檔和檔案以及自己的CmakeLists.txt,分別如下:
//ALU.cpp
#include "ALU.h"
int main()
{
ALU alu1(4, 2);
int get_add, get_sub, get_mul, get_div;
get_add = alu1.add();
get_sub = alu1.sub();
get_mul = alu1.mul();
get_div = alu1.div();
cout << get_add << endl;
cout << get_sub << endl;
cout << get_mul << endl;
cout << get_div << endl;
system("Pause");
return 0;
}
//ALU.h
#pragma once
#define DllExport __declspec( dllexport )//巨集定義
#ifndef ALU_H
#define ALU_H
#include <iostream>
using namespace std;
class DllExport ALU //要生成dll必須加上這個巨集,否則會出錯,這也是我求教得到的,之前也不懂,特此指出注意一下,同時致謝!
{
public:
ALU(int opr_a, int opr_b)
{
a = opr_a;
b = opr_b;
};
~ALU() {};
int add();
int sub();
int mul();
int div();
private:
int a;
int b;
};
#endif
# CmakeLists.txt
SET(LIBALU_SRC ALU.cpp)
ADD_LIBRARY(ALU SHARED ${LIBALU_SRC}) #想得到動態庫,引數就是SHARED
檔案都準備好之後,在 cmd 中進入build資料夾下,執行
cmake . .
其中“. .”的意思是在其父目錄執行cmake,正好是主資料夾下。
在build中生成了ALULIB.sln
這個檔案就是要用到的檔案,現在該visual studio 2015登場了!
直接雙擊開啟sln檔案,會直接在VS中啟動。
右鍵ALL_BUILD,選擇build,開始編譯整個工程。
之後在build生成若干新的資料夾,也有一個lib,進入這個lib,Debug,發現了一個dll和lib。這裡需要說明,即使是生成dll動態連結庫檔案,也會同時產生一個lib靜態連線庫檔案,這個比專門生成靜態連線庫的lib要小。此處的lib是作為dll的入口的意思。
到此為止,DLL就製作完成了!
相關文章
- cmake配置VS工程配置使用dll
- 如何使用CMake生成Windows DLL版本控制資訊Windows
- Windows下CMake編譯安裝OpenCVWindows編譯OpenCV
- CMake VS工程總結
- windows下mysql安裝缺少某個dllWindowsMySql
- Dll堆疊問題(Dll的靜態變數與全域性變數、vs的MT與MD)變數
- Windows環境下,動態連結庫(DLL)的“匯入”與“匯出”概念Windows
- 《冰汽時代》今年年內登陸iOS與安卓平臺 網易聯合制作發售iOS安卓
- vs聯合halcon——採集影像(實時採集與單次採集)
- windows安裝cmake、opencv、qtWindowsOpenCVQT
- windows下基於cmake配置opencv並使用visual studio編譯WindowsOpenCV編譯
- make與cmake
- Windows下OpenCV4.3.0+MinGW64+Cmake具體過程【詳細】WindowsOpenCV
- VS中呼叫DLL動態庫的方法
- cmake-3.18.2下載
- CMake 進行多專案中dll的編譯和連結編譯
- 使用vs2015+cmake編譯opencv+opencv_contrib編譯OpenCV
- windows核心程式設計--DLL基本Windows程式設計
- VS2012生成C的dll並呼叫以及Python呼叫C的DLLPython
- CMake構建學習筆記16-使用VS進行CMake專案的開發筆記
- Rust vs. Go:為什麼強強聯合會更好RustGo
- windows 7 vs 2013編譯與安裝MySQL 5.7Windows編譯MySql
- mingw 編譯生成的dll 如何在vs中使用編譯
- Windows提權實戰————4、DLL注入Windows
- windows核心程式設計--DLL高階Windows程式設計
- clion關聯vs
- 【Tensorflow_DL_Note2】Windows下OpenCv和Tensorflow聯合程式設計環境的配置WindowsOpenCV程式設計
- windows vs 編譯postgresqlWindows編譯SQL
- Windows 下安裝miniconda 虛擬python環境,搭配 VS CodeWindowsPython
- Vivado與notepad++的聯合使用
- KPI vs OKR:區別與聯絡的終極指南KPIOKR
- Windows訊息鉤取(簡單DLL注入)Windows
- Windows下Oracle的下載與安裝WindowsOracle
- kali下安裝beef並聯合Metasploit
- cmake:Hello cmake
- VS開發C++Dll的一些有趣問題C++
- 且看一文梳理VS2019中dll的建立使用
- 與AI共進,智勝未來:智慧金融聯合報告(附下載)AI