Неопределенная ошибка ссылки в C ++ при использовании Cygwin, почему мои файлы не связываются? - PullRequest
1 голос
/ 31 октября 2019

У меня есть серия файлов из общего проекта github, и они отлично работают для всех остальных. Но каждый раз, когда я запускаю их, я получаю

"CMakeFiles / Dice.cpp.dir / Player.cpp.o: в функции Player::Player(std::string)': /cygdrive/c/Users/Abby/CLionProjects/Risk_Domination/Player.cpp:51: undefined reference to Dice :: Dice () '"

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

Файловый проигрыватель, который получает ошибку, включает в себя все ниже. И класс Dice включает в себя конструктор Dice (), который определен и был протестирован.

#include "Dice.h"

//and errors are pointing to line 51:

 this->dice = new Dice();

//and line 81

 a = dice->rollDice(number_of_dice);

1 Ответ

0 голосов
/ 01 ноября 2019

Вы упоминаете, что все отлично работает для других, но для вас это не работает, особенно для файла, который вы написали на своем ПК. Для пояснения: могут ли другие люди компилировать с помощью Dice?

Если у вас есть проблема со связыванием, вполне вероятно, что файл .cpp не настроен для компиляции с исполняемым файлом в CMake. Это говорит мне о том, что проблема в файле CMakeLists.txt, а не в любом исходном файле.

Чтобы устранить проблему, убедитесь, что в исполняемый файл или библиотеку, частью которой вы хотите, чтобы Dice входил, включен файл Dice.cpp. в add_executable или аналогичной функции.

...