Я пытаюсь экспортировать / импортировать переменную между 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: неразрешенный внешний символ
Я был бы очень признателен за любую помощь или хотя бы несколько советов, где я могу узнать больше об этой проблеме.
Для ваших макросов используйте что-то вроде
#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
,
Других решений пока нет …