Ошибка связывания с g ++ 3.4.4 и g ++ 3.4.5 - PullRequest
0 голосов
/ 11 мая 2009

Использование: windows xp, g ++ 3.4.4 с cygwin и g ++ 3.4.5 с mingw.

Я собираю простой класс модульного теста с помощью cppunit.

Когда я создаю ссылку с помощью g ++ 3.4.5, я получаю много ошибок связывания. Когда я связываю с g ++ 3.4.4, я не получаю никаких ошибок, и exe связывается нормально и работает.

Кажется, я не могу отследить ошибки, поэтому есть мысли?

Спасибо.

РЕДАКТИРОВАТЬ: ошибки компоновки: не связанные функции функции. Нравится:

 SimpleTest.cpp:(.text+0x313): undefined reference to `CppUnit::Message::Message(std::string const&, std::string const&)'

РЕДАКТИРОВАТЬ: cmd line:

g++ -I g:\projects\thirdparty\cppunit-1.12.1\include -L g:\projects\thirdparty\cppunit-1.12.1\lib -l cppunitd -o main.exe main.cpp SimpleTest.cpp

Обновление: тот же код в Visual Studio: ошибки нет, модульное тестирование выполняется должным образом.

Ответы [ 3 ]

0 голосов
/ 12 мая 2009

Одна вещь, которую вы, возможно, можете попробовать, это скомпилировать с g ++ 3.4.5 и / или 3.4.4 в Linux. Если результат тогда тот же, то это явно свойство gcc. В противном случае это больше похоже на проблему Mingw.

0 голосов
/ 12 мая 2009

Ваша проблема, вероятно, неверная линия связи. Порядок источников / объектных файлов и библиотек в строке ссылок имеет значение . Правильная линия связи:

g++ -I g:\projects\thirdparty\cppunit-1.12.1\include \
    -L g:\projects\thirdparty\cppunit-1.12.1\lib \
    -o main.exe main.cpp SimpleTest.cpp -lcppunitd
0 голосов
/ 11 мая 2009

По мере взросления g ++ я нахожусь на 4.2.3, его проверка типов стала более педантичной и в этом отношении лучше. С небольшой информацией я бы сказал, что вы должны внимательно посмотреть на ваши вызовы этих методов. Я подозреваю, что типы не совсем правильные. 3.4.4 не ловит, 3.4.5 делает. .... JW

...