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.

[参考译文] CC3200MOD:TI SDK 从1.2.0更改为1.5.0后出现编译错误

Guru**** 2771175 points

Other Parts Discussed in Thread: CC3200MOD, CC3200, CC3200SDK

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1023337/cc3200mod-compilation-error-after-ti-sdk-change-from-1-2-0-to-1-5-0

器件型号:CC3200MOD
Thread 中讨论的其他器件: CC3200CC3200SDK

TI 模块:           CC3200MOD

CCS 版本:        10.2.0.00009

编译器版本:    TI-CGT-ARM_18.12.5.LTS

项目包括:     driverlib、中间件、MQTT、oslib (免费 RTOS)、OTA、 simplelink

                  ${CC3200_SDK_ROOT}/netapps/mqtt/ccs/client/mqtt.a

                  ${CC3200_SDK_ROOT}/oslib/ccs/free_rtos/free_rtos.a

                  ${CC3200_SDK_ROOT}/simplelink/ccs/OS_debug/simplelink.a

                  ${CC3200_SDK_ROOT}/driverlib/ccs/Release/driverlib.a

                  ${CC3200_SDK_ROOT}/middleware/ccs/Release/middleware.a

                  ${CC3200_SDK_ROOT}/simplelink_extlib/FLC/CCS/Release/FLC.a

 

 描述:

  • 当 TI SDK1.2.0是一个链接资源(名称:CC3200_SDK_ROOT ={PROJECT_LOC}\.\cc3200-SDK)时、项目正在编译正常
  • Project 使用 cc_type.h 和 platform.h 文件
  • cc_types.h 是间接的、因为使用了 util64.h
  • TI MQTT 库使用 platform.h
  • 在 cc_types.h 中将 I32定义为  int、 在 platform.h 中将 I32定义为   signed long
  • 在 cc_types.h 中将 I8定义为  char、 在 platform.h 中将 I8定义为   signed char

  

当 TI SDK1.5.0是一个链接资源(名称:CC3200_SDK_ROOT ={PROJECT_LOC}\.\cc3200-SDK_1.5.0)时、编译器错误–没有进行其他更改–只链接到新的 SDK 版本:

  • #258类型名称"i32"的无效重新声明(在"C:/Users/../cc3200-sdk_1.5.0/netapps/mqtt/platform/platform.h "的第34行声明) .ccsproject  /项目名称 第41行、外部位置:C:\Users\.\cc3200-sdk_1.5.0\中间 件\framework\pm\cc_types.h                           C/C++问题
  • #258类型名称"i32"的无效重新声明(在"C:/Users/../cc3200-sdk_1.5.0/middleware/framework/pm/cc_types.h "的第41行声明) .ccsproject /项目名称 第34行、外部位置:C:\Users\.\cc3200-sdk_1.5.0\netapps\mqt\platform\platform.h         C/C++ problem
  • #258类型名称"i8"的无效重新声明(在"C:/Users/../cc3200-sdk_1.5.0/netapps/mqtt/platform/platform.h "的第28行声明) .ccsproject /项目名称 第45行、外部位置:C:\Users\.\cc3200-sdk_1.5.0\中间 件\framework\pm\cc_types.h                           C/C++问题
  • #258类型名称"i8"的无效重新声明(在"C:/Users/../cc3200-sdk_1.5.0/middleware/framework/pm/cc_types.h "的第45行声明) .ccsproject /Project name line 28、外部位置:C:\Users\.\cc3200-sdk_1.5.0\netapps\mqt\platform\platform.h         C/C++ problem

 

三个同时使用 cc_type.h 和 platform.h 文件的项目文件:

  • gmake:***[CF_MQTT.obj]错误1     项目名称                                        C/C++问题
  • gmake:***[cf_tasks.obj]错误1    项目名称                                        C/C++问题
  • gmake:***[main.obj]错误1          项目名称                           C/C++问题
  • gmake:目标"全部"不会由于错误而重新生成。  项目名称             C/C++问题

 

编译器还具有许多与此相关的警告:

  • #303-D typedef 名称已声明(具有相同类型)           。ccsproject      /项目名称                          第27行、外部位置:C:\Users\。\cc3200-sdk_1.5.0\netapps\mqtt\platform\platform.h           C/C++ problem
  • #303-D typedef 名称已声明(具有相同类型)           .ccsproject      / Project name                          line 31、外部位置:C:\Users\.\cc3200-sdk_1.5.0\netapps\mqtt\platform\platform.h           C/C++ problem
  • #303-D typedef 名称已声明(具有相同类型)           .ccsproject      / Project name                          line 32、外部位置:C:\Users\。\cc3200-sdk_1.5.0\netapps\mqtt\platform\platform.h           C/C++ problem
  • #303-D typedef 名称已声明(具有相同类型)           。ccsproject      / Project name                          line 33、外部位置:C:\Users\.\cc3200-sdk_1.5.0\netapps\mqtt\platform\platform.h           C/C++ problem
  • #303-D typedef 名称已声明(具有相同类型)           。ccsproject      / Project name                          line 40、外部位置:C:\Users\.\cc3200-sdk_1.5.0\中间 件\framework\pm\cc_types.h           C/C++ problem
  • #303-D typedef 名称已声明(具有相同类型)           .ccsproject      / Project name                          line 42、外部位置:C:\Users\.\cc3200-sdk_1.5.0\中间 件\framework\pm\cc_types.h           C/C++ problem
  • #303-D typedef 名称已声明(具有相同类型)           .ccsproject      / Project name                          line 43、外部位置:C:\Users\.\cc3200-sdk_1.5.0\中间 件\framework\pm\cc_types.h           C/C++ problem
  • #303-D typedef 名称已声明(具有相同类型)           。ccsproject      / Project name                          line 44、外部位置:C:\Users\.\cc3200-sdk_1.5.0\中间 件\framework\pm\cc_types.h           C/C++ problem

 

已验证 TI SDK 版本1.3.0和1.4.0也存在此错误。

我们的目标是 对 TI 库代码进行尽可能少的修改。

我的问题:

  • 为什么 cc_types.h 和 platform.h 文件中的某些 typedef (如 i8和 i32)被声明为不同?
  • 有没有关于如何处理此类案例的建议?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Mogens、

    我不知道为什么会这样。 我将与另一位团队成员联系、并在周一与您联系。

    此致、
    Jacob

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

    嗨、Mogens、

    我尝试使用您的项目包含和 CC3200SDK_1.5.0中的"闪烁"示例编译空项目。 我能够编译这两个文件。   

    编译器包括:

    链接器文件搜索路径:

    您是否删除了对之前 SDK 版本的所有引用? 否则、这些定义与项目中的某些内容冲突。 您是否曾尝试从 CC3200SDK_1.5.0运行提供示例?

    谢谢、

    Jacob

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

    您好、Jacob、

    在编译和运行 SDK1.5代码示例时没有遇到任何问题-如 MQTT 示例。

    我知道、唯一引用 SDK 的地方是通过 CCS 工程链接的资源:

    在 Include Options 中、列出了各个库路径:  

    在链接器搜索路径中-没有任何 SDK 链接:  

    BR、

    Mogens

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

    您好 Mogens、

    您的编译器和链接器路径对我来说很好。 您的本地图书馆必须存在一定的冲突。  

    我建议在相关文件中添加#ifndef 标志。

    此致、

    Jacob  

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

    Hej Jacob、

    包括防护装置。

    但我们的代码中必须存在某种循环依赖关系。

    TI 从中获得的好处-在 TI SDK 代码中、i32和 i8声明的文件与 cc_types.h  和  platform.h 不同

    您可以 关闭此主题。

    BR、

    Mogens