2016-11-10 15 views
-1

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

__vec_new from ... 
__vec_delete from ... 

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

+0

Вы кажетесь компилировать код C++, но не связывать стандартную библиотеку C++, которая обеспечивает реализацию для операторов 'new' и' delete'. – Clifford

+0

Я искал в папке, установленной моим компилятором, но не нашел файл libstdC++. A или что-то в этом роде. Можете ли вы предложить мне имя файла библиотеки, которое может содержать реализацию new/delete? – tuanpm

+0

Вам нужно будет добавить информацию о toolchain к вашему вопросу (например, gcc, armcc, IAR, Green Hills или другие и номер версии), и вы действительно должны исправить вопрос, как я предложил (т. Е. Опубликовать весь журнал сборки так, мы можем видеть вызовы компилятора и используемые опции, а также полные сообщения об ошибках, иначе мы догадываемся). Возможно, ваш вопрос не дублируется и может быть вновь открыт, но требуется дополнительная информация (отредактируйте вопрос - не оставляйте комментарии с соответствующей информацией - SO не является дискуссионным форумом). – Clifford

ответ

2

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

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

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

enter image description here

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

+0

Обратите внимание, что этот ответ является заполнителем, ожидающим более явных параметров компилятора/компоновщика из OP. Я буду обновлять его, если информация будет доступна. – Clifford

0

я решил ошибку

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

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