-1

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

__vec_new from ...
__vec_delete from ...

我不明白这意味着什么以及如何解决它。任何人都可以帮助我吗?

4

2 回答 2

2

未解析的符号表示未能链接定义所述符号的必要目标代码或库。这些特殊符号很可能与newdeleteC++ 运算符的实现有关,并且很可能表明您尚未链接 C++ 库。我对 Green Hills 工具链不是很熟悉,但是,如果您将链接器单独调用到编译器,您可能需要明确指定 C++ 链接。

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

Green Hill 的编译器可以选择由语言变体选项或链接器覆盖选项选择的 C++ 库。根据您管理项目的方式,可以在 MULTI IDE 设置或命令行中设置这些选项。查阅编译器/链接器文档 - 我发现以下内容:

在此处输入图像描述

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

于 2016-11-10T19:08:36.740 回答
0

我已经解决了错误

原因是项目源包含它包含的文件 *.c 源,并且

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

于 2016-11-11T06:36:34.930 回答