假设有两个c++项目A、B,并且都定义了很多的子函数,这些子函数之间调用关系复杂,如果B需要通过使用DLL库的方式调用A中的一个子函数(或者多个),怎么办?
假设A中定义了很多的子函数,其中有一个子函数add,其函数声明所在头文件和函数定义所在源文件分别为:
add.h
int add(int &a,int &b);
add.cpp
#include "add.h"
int add(int &a, int &b){
return a+b;
}
那么项目B通过使用DLL库的方式调用子函数add的解决步骤如下:
1. 将项目A的配置类型改为动态库(.dll)
2. 在函数声明前添加 extern "C" __declspec(dllexport) 修饰符,函数定义不变
add.h
extern "C" __declspec(dllexport) int add(int &a,int &b);
3. “生成”->“重新生成解决方案”,然后输出窗口将出现成功生成.lib和.dll的提示信息
4. 在项目A的Debug目录下可看到.lib和.dll文件,然后将它们拷贝到项目B的Debug目录下
5. 在项目B中新建函数声明的头文件,并在该头文件中指定导出库.lib的路径
add.h
#pragma comment(lib,"E:\\User2\\VS项目代码\\test\\Debug\\test.lib")
extern "C" __declspec(dllimport) int add(int &a,int &b);
大功告成,在项目B中即可调用函数add了!同时,别忘了还原项目A的配置哦,怎么改过来的就怎么改回去。