本人创建了三个工程:
CCAPI-用来验证函数
CCDLL-用来生成DLL
CCTEST-用来调用生成的DLL
第一步:
在CCAPI中添加APIDefine.h和APIDefine.cpp,代码如下:
APIDefine.h中的内容:
#define DATA_SUM //定义宏开关
#define DATA_DIF //定义宏开关
const int num_1 = 9; //定义num_1
const int num_2 = 8; //定义num_2
_declspec(dllexport) int data_calculate(int num_1, int num_2); //定义函数data_calculate
APIDefine.cpp中的内容:
#include "pch.h"
#include "APIDefine.h"
_declspec(dllexport) int data_calculate(int num_1, int num_2)
{
int num_3 = 0; //定义变量
#ifdef DATA_SUM //宏判断
num_3 = num_1 + num_2; //DATA_SUM打开时执行代码
#endif
#ifdef DATA_DIF //宏判断
num_3 = num_1 - num_2; //DATA_DIF打开时执行代码
#endif
return num_3; //返回结果
}
调用函数int data_calculate(int num_1, int num_2)后查看返回结果如下:
当
#define DATA_SUM
//#define DATA_DIF
返回值为 17;
当
//#define DATA_SUM
#define DATA_DIF
返回值为 1;
以上验证结果和期望结果是一样的。
第二步:
将测试好的APIDefine.h和APIDefine.cpp(代码如上)添加值CCDLL工程,并生成RELEASE的DLL和LIB。
第三步:
建立CCTEST工程,把第二步生成的LIB和DLL还有APIDefine.h拷贝到工程目录,添加APIDefine.h和LIB,修改APIDefine.h为dllimport如下:
#define DATA_SUM //定义宏开关
#define DATA_DIF //定义宏开关
const int num_1 = 9; //定义num_1
const int num_2 = 8; //定义num_2
_declspec(dllimport) int data_calculate(int num_1, int num_2);
在CCTEST里调用调用函数int data_calculate(int num_1, int num_2)后查看返回结果如下:
当
#define DATA_SUM
//#define DATA_DIF
返回值为 1;(这不是期望的值17)
当
//#define DATA_SUM
#define DATA_DIF
返回值为 1;
问题出现:宏开关#define DATA_SUM打开时应该是求8+9结果是17,但结果是1。 宏开关#define DATA_SUM打开不生效。
麻烦专家看下,谢谢。