TI中文支持网
TI专业的中文技术问题搜集分享网站

ios_base has no member _c6xabi_trunc

你好,我正在编译一个C++工程,编译器报下面的错误,如下图:

从提示来看把trunc当作了数学函数trunc了,是不是这样,请问这个如何解决?谢谢

Nancy Wang:

本来您定义的trunc是什么? 如果只是个普通变量建议就换个变量名。

user5173649:

回复 Nancy Wang:

没有定义trunc,trunc这个符号是ti\ccsv6\tools\compiler\ti-cgt-c6000_8.3.3\include\libcxx\ios文件里面定义的常数
typedef unsigned int openmode;static _DATA_ACCESS const openmode app= 0x01;static _DATA_ACCESS const openmode ate= 0x02;static _DATA_ACCESS const openmode binary = 0x04;static _DATA_ACCESS const openmode in= 0x08;static _DATA_ACCESS const openmode out= 0x10;static _DATA_ACCESS const openmode trunc= 0x20;

您可以打开这个文件看一下。

不知道编译器为什么会对自己的库的符号引用报错误。

Nancy Wang:

看一下ccs->properties->c6000 linker里面有没有添加tools\compiler\ti-cgt-c6000_8.1.3\lib库文件。

user5173649:

回复 Nancy Wang:

lib文件加了,CCS自动添加了。 另外请教一下,因为C++程序里使用了exceptions,编译器提供的预编译的库没有带_eh后缀的,所以我用mklib又生成了一个版本,同时注意到还有带_mt_的库文件名,这个是mt是什么含义?

Nancy Wang:

回复 user5173649:

_mt_是multi threading的意思,跟你编译是是否用了 –openmp选项有关。

user5173649:

回复 Nancy Wang:

谢谢

user5173649:

回复 user5173649:

你好,我按住键盘的Ctrl键,用鼠标单击trunc,的确跳转到了 math.h文件里的 trunc的定义处,会不会链接器也由于某种原因也解析错了?

Nancy Wang:

回复 user5173649:

在要调用的函数之前加上extern "C",看一下这个链接。
processors.wiki.ti.com/…/C_Support_in_TI_Compilers

user5173649:

回复 Nancy Wang:

你好 之前我以为解决了,其实被别的问题掩盖了。这个问题我在描述一下: trunc 是ti\ccsv6\tools\compiler\ti-cgt-c6000_8.3.3\include\libcxx\ios文件里面定义的静态变量, 在fstream(也是库文件)里面被引用,但是编译器不能解析这个符号,即使前面有域控制符::,这个是编译器设置的问题呢还是在写写包含文件时要有特殊的顺序?(#include ……) 谢谢!

赞(0)
未经允许不得转载:TI中文支持网 » ios_base has no member _c6xabi_trunc
分享到: 更多 (0)