(ошибка) неразрешенные символы при сборке приложения C++ для ARM с использованием набора инструментов Green Hills

Я кросс-компилирую приложение для целевого устройства, используя ARM-арку, используя набор инструментов Green Hills (устройство будет работать под управлением ОС INTEGRITY), но оно завершается с некоторой ошибкой, как эта

__vec_new from ...
__vec_delete from ...

Я не понимаю, что это значит и как это решить. Кто-нибудь может мне помочь?

2 ответа

Неразрешенные символы указывают на невозможность связать необходимый объектный код или библиотеки, определяющие указанные символы. Эти конкретные символы, скорее всего, связаны с реализацией new а также delete Операторы C++, и, скорее всего, указывают, что вы не связали библиотеку C++. Я не очень знаком с цепочкой инструментов Green Hills, но в тех случаях, когда вы вызываете компоновщик отдельно от компилятора, вам может понадобиться явно указать связывание C++.

При использовании IDE возможно, что вы создали проект C, но добавили код C++ - это может привести к параметрам компоновщика, которые не связывают поддержку C++ и библиотеки.

Компилятор Green Hill имеет выбор библиотек C++, выбранных либо опцией языкового варианта, либо опцией переопределения компоновщика. Эти параметры могут быть установлены в настройках MULTI IDE или в командной строке в зависимости от того, как вы управляете проектом. Обратитесь к документации компилятора / компоновщика - я нашел следующее:

введите описание изображения здесь

У вас должен быть доступ ко всей документации, на следующих страницах описывается, как компоновщик выполняет поиск в библиотеках и как указать альтернативные библиотеки. Если вы отключили автоматический поиск в библиотеке, указав -nostdlibавтоматическое связывание не будет выполнено, и вам придется явно связать необходимые библиотеки.

Я исправил ошибку

Причина в том, что источник проекта содержит файл *.c, в который он включен, и

Я переименовал его в *.cpp, тогда ошибка исчезла

Другие вопросы по тегам