vxWorks-Workbench 6.8未解析的C ++符号

时间:2014-06-19 15:33:01

标签: c++ vxworks workbench

我使用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 .....等。

有人遇到过这个问题吗?看起来它只是不包括C ++库......如果是这样,有人知道如何添加它吗?

感谢。

3 个答案:

答案 0 :(得分:0)

通常,在&#34;构建工具&#34;项目属性的选项卡&#34;链接器&#34;下拉列表应为PPC项目的C ++ DKM带来以下参数:

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。没关系格式化 - 只是为了便于阅读。

答案 1 :(得分:0)

您使用的是标准模拟器吗?如果是,请确认内核Image是否包含所有c ++组件。

为此,请创建一个新的内核Image项目,并在内核配置中包含iostream组件。 虽然还有其他方法,但这应该可以解决问题。

更好地使用kprintf,因为它是标准做法的屏幕输出。

答案 2 :(得分:0)

这是由于您的vxworks映像配置所致。在vxworks映像项目中,您应该完全添加cpp组件。

相关问题