vxWorks-Workbench 6.8 неразрешенные символы C++

Я сделал проект vxWorks, используя загружаемый модуль ядра в vxWorks. Он отлично строится, но когда я загружаю его в среду моделирования, он будет жаловаться на неразрешенные библиотеки C++.

Это единственный код

#include <iostream>

int helloworld()
{
  std::cout << "HELLO WORLD\n";
  return 0;  
}

Я получу неразрешенные std::uncaught_exception(), __cxa_end_catch, __gx_personality_v0, std::cout.....и т.д.

У кого-нибудь была эта проблема? Похоже, что он просто не включает библиотеки С++... если да, то кто-нибудь знает, как это добавить?

Спасибо.


person Skynight    schedule 19.06.2014    source источник


Ответы (3)


Обычно на вкладке "Инструменты сборки" свойств проекта раскрывающийся список "Компоновщик" должен содержать следующие параметры для проекта C++ DKM for PPC:

echo "building $@";
rm -f %OutFile%;
ddump -Ng %Objects% %Libraries% | tclsh $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl -c ppc -tags $(VSB_DIR)/tags/ppc/PPC32/common/dkm.tags > $(OBJ_DIR)/ctdt.c;
%ccompilerprefix%
$(TOOL_PATH)
dcc %DebugModeFlags% $(CC_ARCH_SPEC) -Xdollar-in-ident -Xforce-declarations $(ADDED_CFLAGS)
%Includes% $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL  -D_VSB_CONFIG_FILE=\"$(VSB_CONFIG_FILE)\" $(DEFINES) -o $(OBJ_DIR)/ctdt.o -c $(OBJ_DIR)/ctdt.c;
%linkerprefix% $(TOOL_PATH)dld -tPPCFH:vxworks68 -X -r5 %ToolFlags% -o %OutFile% $(OBJ_DIR)/ctdt.o
%Objects%
%Libraries% $(LIBPATH) $(LIBS) $(ADDED_LIBPATH) $(ADDED_LIBS) && if [ "$(EXPAND_DBG)" = "1" ]; then plink "$@";fi

Проверьте, есть ли это в вашем проекте. Особенно вокруг части %Libraries%.

P.S. Не обращайте внимания на форматирование - это просто для удобства чтения.

person Nikita Vorontsov    schedule 22.07.2014

Вы используете стандартный симулятор? Если да, подтвердите, включены ли в образ ядра все компоненты C++.

Для этого создайте новый проект образа ядра и включите в конфигурацию ядра компонент iostream. Хотя есть и другие способы, но это должно решить проблему.

Лучше использовать kprintf для вывода на экран, так как это стандартная практика.

person finickyTunnel    schedule 22.12.2016

Это связано с конфигурацией вашего образа vxworks. Из проекта образа vxworks вы должны полностью добавить компоненты cpp.

person Tturk    schedule 28.08.2019