Ошибки компоновщика C++ GNU
-
05-07-2019 - |
Вопрос
Я пытаюсь скомпилировать свою программу в Windows через Cygwin с помощью команды компиляции:
g++ ping.cpp -I./include -L./lib -lchartdir50
Я использую API под названием ChartDirector, который рисует диаграммы для меня.Я никогда раньше не связывал библиотеки таким образом (обычно я делаю это через Visual Studio), так что я немного новичок в этом.У меня действительно большой список ошибок, поэтому я не буду перечислять их все, но приведу одну, просто чтобы уточнить тип ошибок компоновщика, которые я получаю:
(.text$_ZN9BaseChartD1Ev[BaseChart::~BaseChart()]+0x4f): undefined reference to '_CBaseChart_destroy'
Все это неопределенные ссылки на ошибки 'xxx'.
У меня есть куча заголовочных файлов в ./include и библиотека под названием chartdir50.lib в ./lib
Что не так с моей строкой компиляции?
Решение 3
Хм ... это странно. Я использую 64-битную систему, но по какой-то причине я попробовал ее с 32-битной библиотекой, и она скомпилирована. Спасибо!
Другие советы
Я не уверен, но .lib
скомпилирован с помощью Visual C ++?
Если да, я не думаю, что он совместим с GCC, вы должны скомпилировать библиотеку с GCC / G ++ и использовать этот файл или использовать совместимый двоичный файл, если у вас нет доступа к источнику. Р>
Я никогда раньше не использовал эту библиотеку, но когда я погуглил это, я заметил, что другие люди пытаются - lchartdir вместо -lchartdir50 , поэтому попробуйте.
Я предполагаю, что библиотека также была создана с помощью gcc.
AFAIK .lib - это статическая библиотека, поэтому вам не нужно указывать на нее с помощью переключателя компилятора -l.
Просто используйте его как другой файл в командной строке, например
g ++ ping.cpp -I./включить -L./lib {путь к библиотеке здесь}/chartdir50.lib
хтх.