Проблема с связыванием из-за изменения каталога cpp - PullRequest
0 голосов
/ 22 июля 2011

Я программист Java;поэтому я сталкиваюсь с множеством проблем, когда речь заходит о c ++ из-за ссылок и так далее.Проблема в основном заключается в том, что я хочу перефакторинг одного файла (Transformation.cpp) в (TrasnformationBackend.cpp), (TrasnformationFrontend.cpp) и заголовочный файл.Как вы можете видеть, мне нужно было объявить глобальную структуру через все файлы, и я сделал это, используя «extern» в заголовочном файле, и он работает нормально.Тем не менее, неразрешенная внешняя ошибка появляется, когда я пытаюсь переместить файл cpp внешнего интерфейса в другой каталог.

Кстати, я использую BOOST.

Ответы [ 2 ]

1 голос
/ 22 июля 2011

Объявление extern в заголовке только говорит компилятору, что эта переменная будет определена в модуле компиляции. На самом деле он не создает эту переменную / выделяет для нее хранилище.

Если у вас есть .h:

extern int globalvar;

Вам нужен один и только один из ваших .cpp файлов:

int globalvar;

В противном случае компиляция пойдет нормально, но ссылка не будет выполнена, потому что это внешнее не может быть разрешено.

0 голосов
/ 22 июля 2011

"... появляется ошибка, когда я пытаюсь переместить fpptend cpp файл в другой каталог."

ОК, если вы заглянете в настройки вашего компилятора / IDE, там будет настройка, в каком каталоге (ах) он будет искать, чтобы найти файл (ы) .cpp; Вам нужно добавить новый каталог здесь?

...