1.动态库调用
1.1隐式调用(一般调用C++的库)
1.2显示调用(可以调用其它语言的库)
2.main调用 :需要lib,dll,h
1.动态库调用
1.1隐式调用
h文件: 声明导出函数
#pragma once
#ifdef BUILD_MYDLL
#define API_SYMBOL __declspec(dllexport)
#else
#define API_SYMBOL __declspec(dllimport)
#endif
extern "C" API_SYMBOL int convert_array(int *data,int len);
cpp文件:导出文件所以要定义宏
#define BUILD_MYDLL
#include "pch.h"
#define BUILD_MYDLL
#include "mydll.h"
#include<iostream>
using namespace std;
//
int convert_array(int* data, int len)
{
for (int i = 0; i < len; i++)
{
cout << data[i] << ",";
}
cout << endl;
int nTotal = 0;
for (int i = 0; i < len; i++)
{
nTotal += data[i];
--data[i];
}
return nTotal;
}
2.main调用动态库做好lib,dll,h的导入设置:
lib导入设置: 链接器->输入->附加依赖项:
给lib一个搜索路径: 链接器->常规->附加库目录:
h文件设置: C/C++ ->常规->附加包含目录:
dll 文件设置
main.cpp 添加头文件后直接调用函数。
#include <iostream>
#include "mydll.h"
int main()
{
std::cout << "main!\n";
int arr[] = {3,6,7,8};
int nLen = sizeof(arr) / sizeof(int);
int nTotal = convert_array(arr, nLen);
std::cout << "数组元素求和结果:" << nTotal << std::endl;
std::cout << "数组元素新值:" << std::endl;
for (int i = 0; i < nLen; i++)
{
std::cout <<arr[i]<<",";
}
}