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就制作完成了!

  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值