1、参考网上博文《vs2017 C++动态链接库的创建和调用(隐式)》
创建动态库项目, 项目属性去掉预编译头
2、添加CDatabase.h ,CDatabase.cpp文件
3、在CDatabase.h中定义
#ifdef DBHELPER_EXPORTS
#define EXPORTS_API __declspec(dllexport)
#ifdef __cplusplus
# define BEGIN_C_DECLS extern "C" {
# define END_C_DECLS }
#else
# define BEGIN_C_DECLS
# define END_C_DECLS
#endif
4、生成解决方案 在x64\debug()目录下即有.dll .lib等文件
利用Depends.exe查看DBHelper.dll,能看到输出函数,C++与C#都可以使用。
二、VS调用动态链接库
1、创建一个新的项目
2、在头文件夹中引入DLL的.h头文件,把.h 、.lib文件复制到新建项目所在的文件夹,.dll放入新建项目的Debug()目录
3、在资源文件中引入.lib文件
(方法二 在调用之处添加头文件并关联库 )
#include "dll.h"
#pragma comment(lib, "Dll.lib")
.h .lib 文件如不拷到项目位置,需设置包含目录和库的路径;
4、在main函数中加入如下代码
#include"data.h"
int main()
{
const float angle = 12.5f;
const float distance = 65.0f;
const vector<int> data= { 1193,983,703,784 };
vector<string> datastr;
bool a=WindSpeeddataCalc(data, angle, distance, datastr);
for (int i = 0; i < datastr.size(); i++)
cout << datastr[i]<<endl;
cout << "result:" << a;
getchar();
return 0;
}
5、项目->属性->配置属性->C/C++->代码生成->运行库,选择多线程调试DLL(/MDd)