导入/导出变量时出错

时间:2018-10-26 06:37:24

标签: c++ c++11 dll importerror

我正在尝试导出/导入exe和dll之间的变量。 有三个文件夹。 B.cpp放在一个产生exe的文件夹中。 C.cpp在另一个正在生成dll的文件夹中。

A.h位于共享文件夹中,如果我们需要在文件夹之间使用某些内容,则可以使用此文件夹。它只有头文件。

A.cpp在生成dll的文件夹中。

在A.h

__declspec(dllexport) extern int* val;

在A.cpp中

__declspec(dllexport) int* val;

B.cpp

#include <A.h>
set val

C.cpp

#include <A.h>
get val and using val in some function

**我收到错误B.obj:错误LNK2001:无法解析的外部符号

如果能提供任何帮助或至少提供一些建议,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

对于宏,请使用

#ifdef VAL_EXPORTS  
#define VAL_API __declspec(dllexport)   
#else  
#define VAL_API __declspec(dllimport)   
#endif

A.h中,使用extern声明它,即VAL_API extern int* val;;在A.cpp中,定义它而不使用extern,即VAL_API int* val = nullptr;

B.h中,#include A.h并为其分配任何值。

C.h中,只需#include A.h,您就可以使用val