Я пытаюсь скомпилировать программу-оболочку других людей в большой системе, в которой она использует глобальный объект из другого файла, определение класса выглядит следующим образом:
class __declspec(dllexport) A
{
...
static A * instance;
}
И в моем отдельном исходном файле (который я хочу собрать в .exe) я включил заголовочный файл A.h и объявил в начале так:
A * A::instance;
для доступа к данным в A.
Проблема в том, что этот фрагмент кода может быть успешно собран в Linux, теперь, когда я пытаюсь встроить его в Windows NT, у него будут проблемы.
Если я оставлю это так, компилятор пожалуется на C2491 error, definition of dllimport function not allowed
.
Если я уберу эту строку объявления A, я получу много ошибок LNK2001: unresolved external symbol
.
Не совсем уверен, в чем здесь проблема, я провел некоторые исследования в Интернете, но не смог найти хорошего ответа, я сам не слишком знаком с импортом / экспортом DLL и некоторыми хитростями C ++. Может ли кто-нибудь дать некоторое представление о проблеме или о том, в каком направлении мне уделить время, чтобы выяснить это?
Или, скажем, если у меня уже есть такой статический объект, и я хочу написать другую программу для доступа к нему, как именно мне это сделать?
Пожалуйста, исправьте меня, если я здесь допустил какие-либо ошибки. Спасибо!