(ошибка) неразрешенные символы при сборке приложения 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, тогда ошибка исчезла