找到vs2017自带的tool窗口命令
此时什么都没导出来 需要在编译器加上一句话
其中@是动态改名机制
加入extern “C” 则删掉了动态改名机制
如果找到Debug文件夹,发现dll和lib都有 lib在动态库中只是导入库。里面仅仅一些说明函数原型的东西,真正的库代码实现在dll里,这是两部分。
真正编译之后 lib没有作用了 就是把dll和exe的放在同一个文件夹下面。
隐式调用
DynamicLibrary.h
#pragma once
#ifdef __DLL_EXPORT_
#define EXPORT_ENTRY extern "C" __declspec(dllexport)
#else
#define EXPORT_ENTRY extern "C" __declspec(dllimport)
#endif // __DLL_EXPORT_
EXPORT_ENTRY int add(int a, int b);
EXPORT_ENTRY int subtract(int a, int b);
EXPORT_ENTRY int multiply(int a, int b);
EXPORT_ENTRY int divide(int a, int b);
DynamicLibrary.cpp
#include "DynamicLibrary.h"
int add(int a, int b)
{
return a + b;
}
int subtract (int a, int b)
{
return a - b;
}
int multiply(int a, int b)
{
return a * b;
}
int divide(int a, int b)
{
return a / b;
}
client 项目下的测试文件文件中
#include <iostream>
using namespace std;
#pragma comment(lib,"../Debug/dynamicLibrary.lib")
/*forward declarations */
//extern "C" int add(int a, int b);
#include "../DynamicLibrary/DynamicLibrary.h"
int main(void)
{
cout << subtract(15, 12) << endl;
return 0;