Как использовать iostream в VxWorks?

Я разрабатываю программы для VxWorks, используя Tornado 2.2. У меня возникают проблемы при попытке использовать cout. Мой код здесь:

#include <iostream>
using namespace std;
void main()
{
    cout << "Hi" << endl;
}

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

ошибка

В чем проблема и как ее решить?


person xx Q    schedule 07.12.2017    source источник
comment
На этой целевой машине установлена ​​совместимая стандартная библиотека C++? то есть (A) любой stdlib вообще, (B) совместимой версии и (C) совместим с искажением имени, используемым компилятором, который вы использовали   -  person underscore_d    schedule 07.12.2017
comment
Знаете ли вы, как проверить упомянутое выше требование на моей целевой машине?   -  person xx Q    schedule 08.12.2017
comment
Нет, потому что вы ничего не сказали нам об этой целевой машине. Вам решать, как проверить/установить программное обеспечение в ваших системах.   -  person underscore_d    schedule 08.12.2017


Ответы (2)


Проблема в том, что в конфигурации ядра отсутствует соответствующая библиотека. Чтобы исправить это, вам нужно будет добавить правильный компонент в конфигурацию ядра.

По крайней мере, вам нужно будет добавить INCLUDE_CPLUS_IOSTREAMS, однако для этого также могут потребоваться другие компоненты, возможно, один или несколько из INCLUDE_CPLUS, INCLUDE_CPLUS_DEMANGLER или INCLUDE_CPLUS_LANG, в зависимости от того, что уже включено.

Если вы используете графический интерфейс Tornado для настройки своего ядра, вы можете просто просмотреть дерево — я не могу вспомнить точное местоположение в Tornado, но оно довольно близко к началу — вероятно, в C++ Components.

Если вы используете командную строку для создания своего проекта, вам может потребоваться напрямую отредактировать config.h.

person mjs    schedule 11.12.2017
comment
Я попытался добавить эти макросы в config.h, но это не сработало, и проблема все еще существует. Вот еще одна проблема, с которой я пришел через. Кажется, что некоторые параметры в config.h игнорируются или перезаписываются во время загрузки. Эти меня очень смущают. - person xx Q; 16.12.2017

У вас там какая-то старая технология... Проверьте конфигурацию ядра на наличие различных опций CPLUS - вы что-то упускаете.

person user1174627    schedule 08.12.2017
comment
Как проверить конфигурацию моего ядра? - person xx Q; 08.12.2017
comment
Зависит от того, как вы его строите: из Tornado GUI или из командной строки make. В графическом интерфейсе есть инструмент настройки. Make требует редактирования config.h (используя configAll.h в качестве руководства). Я думаю, вам нужно определить INCLUDE_CPLUS_IOSTREAMS. - person user1174627; 08.12.2017