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下用命令使用cmakeWindows
- Windows下CMake編譯安裝OpenCVWindows編譯OpenCV
- 《冰汽時代》今年年內登陸iOS與安卓平臺 網易聯合制作發售iOS安卓
- CMake VS工程總結
- vs下建立並呼叫DLL--簡單例子單例
- windows下mysql安裝缺少某個dllWindowsMySql
- windows下如何使用QT編寫dll程式WindowsQT
- 用QT在Windows下編寫dll程式QTWindows
- windows XP下丟失hal.dll檔案?Windows
- Dll堆疊問題(Dll的靜態變數與全域性變數、vs的MT與MD)變數
- make與cmake
- git與vscode關聯GitVSCode
- Python呼叫windows下DLL詳解 - ctypes庫的使用PythonWindows
- Python的學習(十五)---- 呼叫windows下DLL詳解PythonWindows
- Windows下DLL程式設計技術及應用 (轉)Windows程式設計
- VScode編譯opencv(Cmake + MinGW)VSCode編譯OpenCV
- Windows下OpenCV4.3.0+MinGW64+Cmake具體過程【詳細】WindowsOpenCV
- windows下基於cmake配置opencv並使用visual studio編譯WindowsOpenCV編譯
- CMake 進行多專案中dll的編譯和連結編譯
- CentOS下安裝配置cmakeCentOS
- Rust vs. Go:為什麼強強聯合會更好RustGo
- kali下安裝beef並聯合Metasploit
- oracle聯合索引在CBO下的分析Oracle索引
- CMake構建學習筆記16-使用VS進行CMake專案的開發筆記
- c++ Cmake工程(4) opevslam ros工程模式C++SLAMROS模式
- VS中呼叫DLL動態庫的方法
- windows核心程式設計--DLL基本Windows程式設計
- .Net vs WindowsWindows
- CVSNT在Windows下的安裝和使用(轉)Windows
- clion關聯vs
- vscode中使用cmake構建c++專案VSCodeC++
- IVs提取合併工具ivstools
- Windows下組合快捷鍵和常見命令Windows
- 【Tensorflow_DL_Note2】Windows下OpenCv和Tensorflow聯合程式設計環境的配置WindowsOpenCV程式設計
- windows核心程式設計--DLL高階Windows程式設計
- Windows提權實戰————4、DLL注入Windows