问题描述
具有抽象基类和必须在MSS文件中指定STDIN和STDOUT之间的关系是什么?
以下简单代码导致错误而不指定stdout / stdin:
A级
{
上市:
virtual void Test(int a = 0)= 0;
};
B级:公众A
{
上市:
void Test(int a){}
};
int main(void)
{
B b;
返回0;
}
错误消息如下:
./microblaze_0/lib//libc.a(write.o):在函数`write’中:
write.o(.text + 0x34):对`outbyte’的未定义引用
write.o(.text + 0x58):对`outbyte’的未定义引用
collect2:ld返回1退出状态
make:*** [class / executable.elf]错误1
解决/修复方法
这来自GCC 3.4.1附带的C ++标准库版本。该库是为“托管”平台编写的,即具有STDIN和STDOUT等功能的平台。有一个非托管平台的配置,应该删除这些要求。 Xilinx使用此选项构建C ++。不幸的是,GCC 3.4.1没有完全实现这种支持。我们在EDK 8.1i中找到并修复了一些不完整的功能,但仍然有一些C ++功能可以提升托管平台的要求。纯虚函数就是这样一个特征。您的A类使用纯虚函数,这将引入此代码。
GCC 4.1.1中的支持要好得多。在9.1i中,GCC 4.1.1用于PPC。
没有回复内容