【问题标题】:vxWorks-Workbench 6.8 unresolved C++ symbolsvxWorks-Workbench 6.8 未解析的 C++ 符号
【发布时间】:2014-08-10 05:21:15
【问题描述】:

我制作了一个 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++ 库......如果是这样,任何人都知道如何添加它?

谢谢。

【问题讨论】:

    标签: c++ vxworks workbench


    【解决方案1】:

    通常,在项目属性的“构建工具”选项卡中,“链接器”下拉列表应为 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
    

    检查这是否是您的项目中的 wat。尤其是在 %Libraries% 部分。

    附:没关系格式 - 它只是为了便于阅读。

    【讨论】:

      【解决方案2】:

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

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

      最好使用 kprintf,因为它是标准做法,因为它有屏幕输出。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2010-12-15
          • 1970-01-01
          • 2013-02-28
          • 2012-11-19
          • 1970-01-01
          • 1970-01-01
          • 2012-12-17
          相关资源
          最近更新 更多