Ошибка при импорте / экспорте переменной - PullRequest
0 голосов
/ 26 октября 2018

Я пытаюсь экспортировать / импортировать переменную между exe и dll. Есть три папки. B.cpp в одной папке, которая производит exe. C.cpp находится в другой папке, которая производит DLL.

A.h находится в общей папке, если нам нужно что-то использовать между папками, мы используем эту папку. Он содержит только заголовочные файлы.

A.cpp находится в папке, которая производит DLL.

В А.ч

__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 голосов
/ 26 октября 2018

Для ваших макросов используйте что-то вроде

#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.

...