Вопрос

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

хтх.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top