将c++封装成dll库及vs调用dll

一:c++代码封装成dll库

以下内容是如何让将vs中写的c++函数封装成dll

1.在vs2013中新建一个项目,

项目名

 comface

头文件

 face.h

源文件

 face.cpp 

 Source.def

将c++封装成dll库及vs调用dll_第1张图片


2.main.cpp中复制以下内容

// dllmain.cpp : 定义 DLL 应用程序的入口点。
#include
BOOL APIENTRY DllMain(HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}

3.saveTrain.cpp中写入需要调用的函数


以上是我的部分函数;

saveTrain.h中写入相关的头文件,

#include "opencv2/dnn.hpp"
#include
#include
#include
#include
#include
#include "opencv2/objdetect/objdetect.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include
#include
#include
#include
#include
#include

using namespace std;
using namespace cv;
using namespace cv::dnn;

void createFile(string dir){//函数的内容}

float cov(const vector& v1, const std::vector& v2){...}

Mat comface(String FileName){...}

将c++封装成dll库及vs调用dll_第2张图片


4.在源文件右键添加新建项,vc++目录下选择--代码--模块定义文件

将c++封装成dll库及vs调用dll_第3张图片

将c++封装成dll库及vs调用dll_第4张图片


LIBRARY "saveTXT"  
EXPORTS  
     fileEmpty @1  
     inttostr @2  
    detectAndDisplay @3  
     init1 @4 

    train1 @5

写入函数名并在后面标上@+数字

5.在所建项目的debug文件夹下即生成了dll和lib文件


如果出现报错,可能的问题是source.def中的函数名的问题,建议改个函数名字。   


二、验证dll库

新建一个项目,在项目名上右键---属性--vc目录,找到包含目录,加入刚刚生成的.h的头文件目录;

                                                                                      找到库目录,加入dll和lib所在目录;

                                                        -- 属性--链接器,加入lib所在路径;

即可在新建的项目里面调用函数了。

如果出现dll报错,可能的原因是生成的dll没有放到现在项目所在的debug目录下。


你可能感兴趣的:(c++,dll)