Система C неопределенный символ для архитектуры x86_64 - PullRequest
0 голосов
/ 27 января 2020

Я пытаюсь запустить System C на XCode на ma c (используя стандартный компилятор Clang). В зависимости от языкового диалекта я получаю разные сообщения об ошибках. Если я использую C ++ 14, я получаю ошибку

No member named 'experimental' in namespace 'std'

Если я использую стандарт C ++ 17, я получаю сообщение об ошибке

Undefined symbols for architecture x86_64:
  "sc_core::sc_api_version_2_3_3_cxx201402L<&(sc_core::SC_DISABLE_VIRTUAL_BIND_UNDEFINED_)>::sc_api_version_2_3_3_cxx201402L(sc_core::sc_writer_policy)", referenced from:
      ___cxx_global_var_init in main.o
ld: symbol(s) not found for architecture x86_64

На аналогичный вопрос был получен ответ, однако ответ был «У одного из файлов не было cstdlib, включенного в качестве файла заголовка», без указания этого файла. Кто-нибудь знает, почему возникает эта ошибка или что это за файл с отсутствующим заголовком?

1 Ответ

1 голос
/ 16 февраля 2020

Для System C ядро ​​ и модель *1003* должны быть скомпилированы с использованием одного и того же набора современных функций C ++, см. Файлы RELEASENOTES и INSTALL в упаковке. По умолчанию выбранный в настоящее время стандарт C ++ компилятора используется System C (то есть из -std=c++17).

Чтобы собрать System C для использования в различных стандартных настройках C ++, явно определите препроцессор пометьте SC_CPLUSPLUS минимальной версией , необходимой для сборки обоих моделей, ядра и вашей модели.

Например,

  • build Система C с -std=c++11 (он же SC_CPLUSPLUS=201103L)
  • создает вашу модель с новым стандартом C ++, как вам нравится, но добавьте -DSC_CPLUSPLUS=201103L к вашим флагам компилятора.

Поддерживаемые значения для SC_CPLUSPLUS:

  • 199711L (C ++ 03, ISO / IEC 14882: 1998, 14882: 2003)
  • 201103L (C ++ 11, ISO / IEC 14882: 2011)
  • 201402L (C ++ 14, ISO / IEC 14882: 2014)
  • 201703L (C ++ 17, ISO / IEC 14882: 2017)

Если System C 2.3.3 не работает с какой-либо версией / конфигурацией компилятора Xcode Clang, вы можете рассмотреть открытие вопроса на https://github.com/accellera-official/systemc* 10 43 *.

...