(错误)生成C+时未解析的符号+;使用Green Hills工具链的ARM应用

(错误)生成C+时未解析的符号+;使用Green Hills工具链的ARM应用,arm,embedded,integrity,greenhills,Arm,Embedded,Integrity,Greenhills,我使用Green Hills工具链(该设备将运行INTEGRITY OS)使用ARM arch交叉编译目标设备的应用程序,但它失败了,出现了类似这样的错误 __vec_new from ... __vec_delete from ... 我不明白这意味着什么以及如何解决它。 有人能帮我吗?未解析的符号表示无法链接定义所述符号的必要目标代码或库。这些特殊符号很可能与新< /COD>和 Dele> < /C> C++操作符有关,并且很可能表明您没有链接C++库。我不太熟悉Green Heles工具

我使用Green Hills工具链(该设备将运行INTEGRITY OS)使用ARM arch交叉编译目标设备的应用程序,但它失败了,出现了类似这样的错误

__vec_new from ...
__vec_delete from ...
我不明白这意味着什么以及如何解决它。
有人能帮我吗?

未解析的符号表示无法链接定义所述符号的必要目标代码或库。这些特殊符号很可能与<代码>新< /COD>和 Dele> < /C> C++操作符有关,并且很可能表明您没有链接C++库。我不太熟悉Green Heles工具链,但是,在您将链接器单独调用给编译器的情况下,您可能需要显式指定C++链接。p>

如果使用IDE,可能创建了C项目,但添加了C++代码——这可能会导致链接器选项不链接C++支持和库。

绿色小山编译器有一个C++语言库的选择,它由语言变体选项或链接器覆盖选项选择。这些选项可以在多IDE设置或命令行中设置,具体取决于您管理项目的方式。请参阅编译器/链接器文档-我发现了以下内容:


您应该可以访问完整的文档,下面的页面描述链接器如何搜索库以及如何指定备用库。如果通过指定
-nostlib
禁用了自动库搜索,则不会执行自动链接,您必须显式链接必要的库。

我已解决此错误

原因是项目源中包含一个文件*.c源,并且


我将它重命名为*.CPP,然后错误消失了

你似乎正在编译C++代码,但没有链接C++标准库,它提供了<代码>新< /COD>和Dele> <代码>操作符的实现。我在我的ARM编译器安装文件夹中搜索,但没有找到文件LIbSTDc++。你能告诉我它可能包含new/delete实现的库的文件名吗?然后你需要在你的问题中添加关于工具链的信息(即gcc、armcc、IAR、Green Hills或其他和版本号),你真的应该按照我的建议解决这个问题(即,发布整个构建日志,以便我们可以看到编译器调用和使用的选项以及完整的错误消息,否则我们只是猜测)。您的问题可能不是重复的,可以重新打开,但需要更多信息(编辑问题-不要发表带有相关信息的评论-因此不是讨论论坛)。我已经为我的问题添加了更多信息。但我无法发布整个构建日志,因为它是我公司的机密。对此,我深表歉意inconvinience@BrianMcFarland:我同意,但没有附加信息(Green Hills,而不是GNU编译器),无法确定。请注意,此答案是占位符,等待OP中更明确的编译器/链接器选项。如果有信息,我将更新它。