把c++的exe工程编译为动态库dll静态库lib,并实现调用(超详细)

工具VS2015为例
一、把c++的exe工程编译为动态库dll静态库lib
1.新建项目,命名为MyProject,如图,
在这里插入图片描述
然后点击确定,再点击下一步,如图
在这里插入图片描述然后点击完成。

2.添加需要的包含目录,库目录,附加依赖项,如图 我添加的是opencv库,如果没有什么依赖,那就不添加。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
3.修改模式 ,例如我的是release 64
在这里插入图片描述4.编辑MyProject.h,如图的例子
在这里插入图片描述
(1)类。把你原来exe工程所有的class都按照图中例子形式复制过来,class后面不要忘了写上MYPROJECT_API,这是该class对外开放的接口宏定义(不加上的话,该class就不对外开放),class的成员函数只需要写出声明即可(因为函数的定义需要在MyProject.cpp实现);
(2)变量。把你原来exe工程的所需的变量按照图中形式复制过来,同样不要忘记MYPROJECT_API,这是该变量对外开放的接口宏定义。
(3)函数。把你原来exe工程的所需的函数按照图中形式复制过来,同样不要忘记MYPROJECT_API,这是该函数对外开放的接口宏定义。

另外要注意MYPROJECT_API 添加的位置。在class和在函数中位置稍有不同。
以上就完成了要开放哪些接口的声明,具体实现放在MyProject.cpp中。

5.编辑MyProject.cpp,如图的例子
在这里插入图片描述

(1).类的成员函数。看右边的第三个箭头,这是在MyProject.h声明的类CMyProject的成员函数具体定义。如果你有其他类的成员函数定义,同样需要复制过来。这里没有添加MYPROJECT_API
(2).函数。看右边的第二个箭头,这是这是在MyProject.h声明的函数fnMyProject()的具体实现,如果你有其他的函数实现,同样需要复制过来。这里需要注意添加MYPROJECT_API
(3).变量。看右边的第一个箭头,这是这是在MyProject.h声明的变量nMyProject的具体实现,如果你有其他的变量实现,同样需要复制过来。这里需要注意添加MYPROJECT_API

以上就完成了对MyProject.h中声明的具体实现。

6.点击生成解决方案,生成.dll动态库和.lib静态库
在这里插入图片描述
二、调用dll
1.新建项目
在这里插入图片描述
3.修改模式 ,例如我的是release 64
4.把步骤一的MyProject.h、MyProject.lib复制到工程
5.按照步骤一添加需要的包含目录,库目录,附加依赖项,不同的地方就是附加依赖项需要多加上我们生成的MyProject.lib
6.新建源文件命名为例如Mymain.cpp,并#include MyProject.h,这样你就可以调用在MyProject.h声明的类或者函数,但是看不到类和函数的具体实现。
7.写好你的main函数之后点击生成解决方案,会生成.exe文件,但不能运行,会提示找不到MyProject.dll文件,需要把步骤一生成的MyProject.dll文件复制到与.exe同目录即可。

以上就完成了,把c++的exe工程编译为动态库dll静态库lib,并实现调用。有问题可以留言交流 _

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值