Ошибки компоновщика C ++ GNU - PullRequest
       22

Ошибки компоновщика C ++ GNU

2 голосов
/ 27 ноября 2009

Я пытаюсь завершить свою программу в 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

Что не так с моей строкой компиляции?

Ответы [ 4 ]

1 голос
/ 27 ноября 2009

Хм ... это странно. Я использую 64-битную систему, но по какой-то причине я попробовал ее с 32-битной библиотекой, и она скомпилирована. Спасибо!

1 голос
/ 27 ноября 2009

Я никогда раньше не использовал эту библиотеку, но когда я гуглил , я заметил, что другие люди пытаются, например, -lchartdir вместо -lchartdir50 , так что попробуй.

1 голос
/ 27 ноября 2009

Я не уверен, но .lib скомпилировано с Visual C ++?

Если да, я не думаю, что он совместим с GCC, вам нужно скомпилировать библиотеку с GCC / G ++ и использовать этот файл или использовать совместимый двоичный файл, если у вас нет доступа к источнику.

0 голосов
/ 27 ноября 2009

Я предполагаю, что lib также была создана с помощью gcc.

AFAIK .lib является статической библиотекой, поэтому вам не нужно указывать ее ключом -l компилятора.

Просто используйте его как другой файл в командной строке, например

g ++ ping.cpp -I./include -L./lib {путь к lib здесь} /chartdir50.lib

НТН.

...