This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/C66:从 C++代码调用 dsplib.h 函数时出错

Guru**** 2774995 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/675489/ccs-c66-error-when-calling-dsplib-h-function-from-c-code

器件型号:DRA746

工具/软件:Code Composer Studio

你(们)好  

的 CPP 源代码(g++编译器)中包含了 DSPF_sp_fir gen()、并按照建议包含了头文件:

extern "C"{

#include "C:/Proj/carRepo/partners/ti/dsplib_c66x_3_4_0_0/packages/ti/dsplib/src/DSP_urand32/c66/DSP_urand32.h "

#include "C:/Proj/carRepo/partners/ti/dsplib_c66x_3_4_0_0/packages/ti/dsplib/dsplib.h "

但仍会看到以下错误:

"C:/Proj/carRepo/partners/ti/dsplib_c66x_3_4_0_0/packages/ti/dsplib/src/DSP_urand32/c66/DSP_urand32.h "、第223行:错误:格式错误的 pragma
"C:/Proj/carRepo/partners/ti/dsplib_c66x_3_4_0_0/packages/ti/dsplib/src/DSP_urand32/c66/DSP_urand32.h "、第224行:错误:预期值为")"
"C:/Proj/carRepo/partners/ti/dsplib_c66x_3_4_0_0/packages/ti/dsplib/src/DSP_urand32/c66/DSP_urand32.h "、第268行:错误:格式错误
"C:/Proj/carRepo/partners/ti/dsplib_c66x_3_4_0_0/packages/ti/dsplib/src/DSP_urand32/c66/DSP_urand32.h "、第269行:错误:预期为")"
"C:/Proj/carRepo/partners/ti/dsplib_c66x_3_4_0_0/packages/ti/dsplib/src/DSP_urand32/c66/DSP_urand32.h "、第323行:错误:格式错误的 pragma
"C:/Proj/carRepo/partners/ti/dsplib_c66x_3_4_0_0/packages/ti/dsplib/src/DSP_urand32/c66/DSP_urand32.h "、第324行:错误:预期为")"

谢谢、

Farhad

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我不熟悉 DSPLIB。  但我确实安装了它、我可以重现该诊断。  从这一点可以看出、很明显、该文件从未针对 C++进行过测试。  可能没有测试任何 DSPLIB 与 C++一起工作。

    如果您希望当前版本与 C++一起使用、则您应承担所需更改的责任。  如果您希望在未来版本中实施 C++更改、请告诉我。  我会发现负责的团队、并让他们将产品问题归档。

    谢谢、此致、

    乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你(们)好
    那么、下面这样的解决方案从未经过测试?
    只需声明 C 函数 extern "C"(在 C++代码中)并调用它(从 C 或 C++代码)。


    stackoverflow.com/.../call-a-c-function-from-c-code

    如何混合使用 C 和 C++:
    isocpp.org/.../mixing-c-and-cpp
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这对于我们来说非常重要、因为我们能够在 C66内核中使用优化 DSPLIB 库函数。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 USER="Farhad Gholami18">这样的解决方案从未经过测试?
    只需声明 C 函数 extern "C"(在 C++代码中)并调用它(从 C 或 C++代码)。[/quot]

    否  DSPLIB 头文件从未在这些条件下进行过测试。

    谢谢、此致、

    乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Farhad Gholami18"]这对我们来说非常重要,因为我们能够在 C66内核中使用优化 DSPLIB 库函数。

    我知道。  我将找到负责提供 DSPLIB 的团队、并让他们知道该主题。

    谢谢、此致、

    乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    DSPLIB 库未经过测试、可支持 C++编译、因此需要对标头进行细微编辑才能使用 C++代码。 除了在标头中的函数定义周围添加 extern "C"外,pragma 语句在与 C++代码集成时需要以不同的方式处理。 有关在 C++代码中处理#pragma 的信息、请参阅以下文章:
    processors.wiki.ti.com/.../Pragmas_in_C++

    我能够为 DSP_urand32创建一个快速测试用例、并提供了一个更新的头文件、您可以在 C++代码中集成其他 DSPLIB 函数时将其用作参考。

    e2e.ti.com/.../DSP_5F00_urand32.h

    希望这能解决您的问题。


    此致、
    Rahul