【发布时间】:2010-06-01 14:08:57
【问题描述】:
我正在尝试在我们的一个系统上为我们的 DBA 编译一些代码...我已经编辑了 makefile 以包含文档中列出的相关库,但我不断收到这些错误...你能辨别关于列出的错误,我的命令行有什么明显的问题吗?
谢谢!
make -f /u01/app/banner/ban8/TEST3/links/Makefile_tm_linux64_redhat5_ban8.mk
gcc -m64 -D_NOFIXARGPTR -fpic -shared -DTMCILIB_EXPORTS -D_TMUNICODE -I/usr/local/ban_icu -I/usr/local/src/icu/source/i18n/ -I/usr/local/src/icu/source/common/ -I/usr/local/src/icu/source /extra/ustdio/ -I/usr/local/src/icu/source/io -L/usr/lib64 -L/usr/lib -L/usr/local/src/icu/source/data/ -L/usr /local/src/icu/source/data/out/ -L/usr/local/src/icu/source/tools/toolutil/ -L/usr/lib/im/icuconv/ -L/usr/local/lib/ -L。 -licu18n -licudata -licuuc -licu-toolutil -licuio msgfmttm.cpp umsgtm.cpp tmcilib.cpp -o /u01/app/banner/ban8/TEST3/general/exe/libtmciuc.so
umsgtm.cpp:在函数'void fixArgPtr(const UChar*, __va_list_tag (*)[1])'中:
umsgtm.cpp:158: 错误:数组必须用大括号括起来的初始化器初始化
umsgtm.cpp:194:错误:ISO C++ 禁止分配数组
umsgtm.cpp:在函数‘int32_t tmumsg_vformat(void**, UChar*, int32_t, __va_list_tag*, UErrorCode*)’中:
umsgtm.cpp:305: 错误:无法将参数 '2' 的 '__va_list_tag**' 转换为 '__va_list_tag ()[1]' 到 'void fixArgPtr(const UChar, __va_list_tag (* )[1])'
tmcilib.cpp:在函数'int tmprintf(TMBundle*, const UChar*, ...)'中:
tmcilib.cpp:743: 错误:数组必须用大括号括起来的初始化器进行初始化
tmcilib.cpp:在函数'int tmfprintf(TMBundle*, UFILE*, const UChar*, ...)'中:
tmcilib.cpp:757: 错误:数组必须用大括号括起来的初始化器进行初始化
tmcilib.cpp: 在函数'int tmsprintf(TMBundle*, UChar*, const UChar*, ...)'中:
tmcilib.cpp:808: 错误:数组必须用大括号括起来的初始化器进行初始化
【问题讨论】:
-
看起来代码初始化数组不正确。
-
命令行指定
-D_NOFIXARGPTR,第一个给出错误的函数称为fixArgPtr。查看该函数的源代码,也许它正在使用某个标头应该设置但没有设置的宏来初始化数组,因为 _NOFIXARGPTR 告诉它不需要它。
标签: c++ compiler-errors libraries rhel