工具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,并实现调用。有问题可以留言交流 _