vs2012在已有项目上生成和使用dll动态链接库

假设有两个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)

vs2012在已有项目上生成和使用dll动态链接库_第1张图片

2. 在函数声明前添加 extern "C" __declspec(dllexport) 修饰符,函数定义不变

add.h

extern "C" __declspec(dllexport) int add(int &a,int &b);
3. “生成”->“重新生成解决方案”,然后输出窗口将出现成功生成.lib和.dll的提示信息

vs2012在已有项目上生成和使用dll动态链接库_第2张图片

4. 在项目A的Debug目录下可看到.lib和.dll文件,然后将它们拷贝到项目B的Debug目录下

vs2012在已有项目上生成和使用dll动态链接库_第3张图片

5. 在项目B中新建函数声明的头文件,并在该头文件中指定导出库.lib的路径

add.h

#pragma comment(lib,"E:\\User2\\VS项目代码\\test\\Debug\\test.lib")
extern "C" __declspec(dllexport) int add(int &a,int &b);
大功告成,在项目B中即可调用函数add了!同时,别忘了还原项目A的配置哦,怎么改过来的就怎么改回去。

你可能感兴趣的:(vs2012在已有项目上生成和使用dll动态链接库)