Как использовать пространство имен libstdc ++ при использовании libc ++ в качестве стандартной библиотеки? [Дубликат]

Использовать ';' как разделитель. Если переменные среды установлены правильно, вы должны увидеть свои настройки. Если ваши PATH и CLASSPATH верны, окна должны распознавать эти команды. Вам не нужно перезагружать компьютер при установке Java.

3
задан csotiriou 26 September 2015 в 11:03
поделиться

2 ответа

1) Да, вы можете, конечно, смешивать и сопоставлять, какие C ++-исполнения используют ваш код на C ++, если эти отдельные модули фактически не передают объекты друг другу. Например, если у вас есть два модуля в вашем приложении, которые просто выставляют C API, но внутренне используют C ++, каждый из них может использовать любую требуемую среду C ++. Проблемы возникают при попытке обмениваться объектами между runtimes.

2) При компиляции и связывании вы можете использовать аргумент командной строки '--stdlib = libstdc ++' или '--stdlib = libc ++', чтобы указать, какой C ++ библиотеки для использования. Если ваш конечный исполняемый файл должен ссылаться на оба, вам нужно вручную указать другой (например: --stdlib = libc ++ -lstdc ++).

3) Да, но обратите внимание, что libstdc ++ был устаревшим годом назад и даже не доступен на watchOS или tvOS, так что лучше всего всего переложить все на libc ++.

5
ответ дан Jeremy Huddleston Sequoia 21 August 2018 в 15:12
поделиться
  • 1
    Благодарю. Это был ответ, который я искал. Вы знаете, существует ли аргумент командной строки для связывания библиотеки, а затем явно указывается версия stl только для этого? – csotiriou 27 September 2015 в 08:39
  • 2
    При компиляции одного исходного файла вы указываете, какую среду выполнения C ++ вы используете, и компилятор будет использовать соответствующий STL для этой среды выполнения. Это использование -stdlib = libc ++ или --stdlib = libstdc ++ во время компиляции. При времени ссылки аргумент -stdlib = ... просто сопоставляется с соответствующей библиотекой; поэтому вам нужно вручную указать другой в момент ссылки. – Jeremy Huddleston Sequoia 27 September 2015 в 15:19

Пока вы не смешиваете объекты (например, передавая строку из одной библиотеки в функцию, которая ожидает другой тип строки), вы можете сделать это, включив обе библиотеки при создании приложения верхнего уровня.

В моем случае он работал, установив стандартный C ++ lib в версию GNU, а затем добавив libc ++, как и в любую другую системную библиотеку.

2
ответ дан Phillip Mills 21 August 2018 в 15:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: