ccs3.3 for OMAP3530 问题

时间:2021-11-08 18:00:32
编译器ccs3.3
操作系统nucleus
处理器OMAP3530

程序编译后load symbol时候报错,程序不能下载,经排查,发现类成员里如果有某静态类成员,
或者静态结构,而该类或者结构含有构造函数,就会报这样的错误,只要去掉构造函数,程序就
可以下载。

下面是一个测试程序,去掉构造函数后就可以下载,现在这样就不行。

请牛人指点,谢谢啦。

 class CTest 

public: 
     CTest(){m_pTest=0;}; // After delete t he structure function   ,problem will die out 
    int* m_pTest;    
}; 



class CComEntity  

private: 
    static CTest s_value[10]; 



CTest CComEntity::s_value[10]; 

6 个解决方案

#1


错误提示:
Internal error: get_attr_value() found unrecognized attribute form

#2


CTest(){m_pTest=0;}; // After delete t he structure function ,problem will die out  
  int* m_pTest;  
---》这里的m_pTest是一个指向整形数据的指针变量,你构造函数中应该让这个指针指向某个整形变量才对啊,怎么把0赋值给m_pTest,我猜测楼主的意思应该是m_pTest=NULL才对吧,楼主可以试一下,是否可以麻烦告知,先谢谢了。

#3


和楼上观点有点不同哈。
class CTest  
{  
public:  
  CTest(){m_pTest=0;}; // After delete t he structure function ,problem will die out  
  int* m_pTest;   
};  
“下面是一个测试程序,去掉构造函数后就可以下载,现在这样就不行。”
楼主,如果加上了这个构造函数,则类CTest不具备默认构造函数。
s_value数组,你又没显示初始化,那么编译器就迷茫了,它不知道如何去初始化这个数组。

#4


而如果楼主去掉了这个构造函数
则编译器在编译时,发现该类一个构造函数都没有
则编译器会自动为类CTest生成一个默认的构造函数,则可以通得过。
因为s_value数组,编译器可以通过调用CTest类的默认构造函数去初始化

#5


楼主如果非要定义一个自己的构造函数的话,要定义一个默认的构造函数,而不是现在这样。
这个怎么定义,相信楼主去看一下基础c++,楼主应该会的。

#6


回2楼:
把=0 改成=NULL是不行的。
回3,4楼:
没有参数的构造函数是匹配的。而且如果该数组如果不是static的就没有问题。

问题是这样,编译器编译可以通过,也可以下载,但是在下载symbol(调试信息)时候
报错,我们怀疑是ccs3.3的配置问题。

工程本身是一个非常庞大的程序,以前在omap老的处理器上也可以正常调试,下载。
换了新的处理器omap3530以后,编译器换成了ccs3.3才有类似的问题,非常奇怪。

#1


错误提示:
Internal error: get_attr_value() found unrecognized attribute form

#2


CTest(){m_pTest=0;}; // After delete t he structure function ,problem will die out  
  int* m_pTest;  
---》这里的m_pTest是一个指向整形数据的指针变量,你构造函数中应该让这个指针指向某个整形变量才对啊,怎么把0赋值给m_pTest,我猜测楼主的意思应该是m_pTest=NULL才对吧,楼主可以试一下,是否可以麻烦告知,先谢谢了。

#3


和楼上观点有点不同哈。
class CTest  
{  
public:  
  CTest(){m_pTest=0;}; // After delete t he structure function ,problem will die out  
  int* m_pTest;   
};  
“下面是一个测试程序,去掉构造函数后就可以下载,现在这样就不行。”
楼主,如果加上了这个构造函数,则类CTest不具备默认构造函数。
s_value数组,你又没显示初始化,那么编译器就迷茫了,它不知道如何去初始化这个数组。

#4


而如果楼主去掉了这个构造函数
则编译器在编译时,发现该类一个构造函数都没有
则编译器会自动为类CTest生成一个默认的构造函数,则可以通得过。
因为s_value数组,编译器可以通过调用CTest类的默认构造函数去初始化

#5


楼主如果非要定义一个自己的构造函数的话,要定义一个默认的构造函数,而不是现在这样。
这个怎么定义,相信楼主去看一下基础c++,楼主应该会的。

#6


回2楼:
把=0 改成=NULL是不行的。
回3,4楼:
没有参数的构造函数是匹配的。而且如果该数组如果不是static的就没有问题。

问题是这样,编译器编译可以通过,也可以下载,但是在下载symbol(调试信息)时候
报错,我们怀疑是ccs3.3的配置问题。

工程本身是一个非常庞大的程序,以前在omap老的处理器上也可以正常调试,下载。
换了新的处理器omap3530以后,编译器换成了ccs3.3才有类似的问题,非常奇怪。