您的位置:首页 > 其它

Windows下Cmake与VS联合制作dll

2016-06-17 16:29 246 查看
接触大的项目,铺天盖地的代码总是会掩盖了开发环境和工具的本质,上手之前,跑跑小的历程有助于对项目的理解,提高效率。

首先记录一下 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就制作完成了!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息