ICTCLAS2015 linux编译不通过解决办法(expected constructor, destructor or type conversion before '(' token)
2015-01-28 21:44
537 查看
下载了最新版本的ICTCLAS2015(NLPIR)
我是在centos6.5机上用codeblocks开发C++程序,导入了NLPIR.h头文件,以及加载了libNLPIR.so库,
但是始终编译不通过,报错是:
NLPIR.h:105: 错误:expected constructor, destructor or type conversion before '(' token
NLPIR.h:121: 错误:expected constructor, destructor or type conversion before '(' token
NLPIR.h:140: 错误:expected constructor, destructor or type conversion before '(' token
NLPIR.h:157: 错误:expected constructor, destructor or type conversion before '(' token
NLPIR.h:172: 错误:expected constructor, destructor or type conversion before '(' token
NLPIR.h:188: 错误:expected constructor, destructor or type conversion before '(' token
......
换了一台机器进行测试,居然编译通过,运行成功,推断是机器原因,后来查找资料,发现一哥们也遇到类似的问题,我根据他的思路将下述部分
#ifdef OS_LINUX
#define NLPIR_API extern "C"
#else
#ifdef NLPIR_EXPORTS
#define NLPIR_API extern "C" __declspec(dllexport)
#else
#define NLPIR_API extern "C" __declspec(dllimport)
#endif
#endif
替换为 #define NLPIR_API extern "C"
重新编译,上述错误全部消失,只剩下一个错误“expected initializer before NLPIR",然后我定位到相应位置:
#ifdef OS_LINUX
class CNLPIR {
#else
class __declspec(dllexport) CNLPIR{
#endif
(查google, StackOverflower)注释掉宏判断,即
//#ifdef OS_LINUX
class CNLPIR {
//#else
//class __declspec(dllexport) CNLPIR{
//#endif
重新编译运行,成功。
后来想一想,应该是所测试的机器未定义宏OS_LINUX,于是在NLPIR.h头文件开始处添加如下语句
#ifdef __linux
#ifndef OS_LINUX
#define OS_LINUX
#endif
#endif
并还原前面几步的操作,即可解决centos6.5上ICTCLAS2015编译不通过问题。
ps. 我在大数据论坛提交问题及解决方案(http://www.bigdatabbs.com/forum.php?mod=viewthread&tid=8425&extra=)。
我是在centos6.5机上用codeblocks开发C++程序,导入了NLPIR.h头文件,以及加载了libNLPIR.so库,
但是始终编译不通过,报错是:
NLPIR.h:105: 错误:expected constructor, destructor or type conversion before '(' token
NLPIR.h:121: 错误:expected constructor, destructor or type conversion before '(' token
NLPIR.h:140: 错误:expected constructor, destructor or type conversion before '(' token
NLPIR.h:157: 错误:expected constructor, destructor or type conversion before '(' token
NLPIR.h:172: 错误:expected constructor, destructor or type conversion before '(' token
NLPIR.h:188: 错误:expected constructor, destructor or type conversion before '(' token
......
换了一台机器进行测试,居然编译通过,运行成功,推断是机器原因,后来查找资料,发现一哥们也遇到类似的问题,我根据他的思路将下述部分
#ifdef OS_LINUX
#define NLPIR_API extern "C"
#else
#ifdef NLPIR_EXPORTS
#define NLPIR_API extern "C" __declspec(dllexport)
#else
#define NLPIR_API extern "C" __declspec(dllimport)
#endif
#endif
替换为 #define NLPIR_API extern "C"
重新编译,上述错误全部消失,只剩下一个错误“expected initializer before NLPIR",然后我定位到相应位置:
#ifdef OS_LINUX
class CNLPIR {
#else
class __declspec(dllexport) CNLPIR{
#endif
(查google, StackOverflower)注释掉宏判断,即
//#ifdef OS_LINUX
class CNLPIR {
//#else
//class __declspec(dllexport) CNLPIR{
//#endif
重新编译运行,成功。
后来想一想,应该是所测试的机器未定义宏OS_LINUX,于是在NLPIR.h头文件开始处添加如下语句
#ifdef __linux
#ifndef OS_LINUX
#define OS_LINUX
#endif
#endif
并还原前面几步的操作,即可解决centos6.5上ICTCLAS2015编译不通过问题。
ps. 我在大数据论坛提交问题及解决方案(http://www.bigdatabbs.com/forum.php?mod=viewthread&tid=8425&extra=)。
相关文章推荐
- error: expected constructor, destructor, or type conversion before '(' token问题
- 两个C++编译错误及解决办法--does not name a type和field `XX' has incomplete type
- 错误:expected constructor, destructor, or type conversion before ‘typedef’ 的解决方法
- 两个C++编译错误及解决办法--does not name a type和field `XX' has incomplete type
- unexpected 'class***或error C2501: missing storage-class or type specifiers 错误解决办法
- linux 编译中required file `./ltmain.sh' not found 错误的解决办法
- 编译linux 内核时:decompress.c:(.text+0x25c4): undefined reference to `error'的解决办法
- Xcode 6.1 编译出现Unknown type name 'UIImage',解决办法
- 两个C++编译错误及解决办法--does not name a type和field `XX' has incomplete type
- 在Ubuntu gcc下编译c程序,错误如下: test.c:3: error: expected ';', ',' or ')' before '&' token
- android NDK开发编译时出现Type 'jint' could not be resolved和Unresolved inclusion: <jni.h>的解决办法
- Conversion to Dalvik format failed with error 1 Type Unable to resolve target 'android-7'的解决办法
- Undefined function or method ' ' for input arguments of type 'double' ---错误解决办法
- warning C4150: deletion of pointer to incomplete type 'xxx'; no destructor called 的解决办法
- VC6 winpcap编程 missing ';' before type 'unsigned int' 解决办法
- android NDK开发编译时出现Type 'jint' could not be resolved和Unresolved inclusion: <jni.h>的解决办法
- Linux下undefine reference to 'FT_Init_FreeType'的解决办法
- 两个C++编译错误及解决办法--does not name a type和field `XX' has incomplete type
- 编译内核出错:invalid option `abi=aapcs-linux' 解决办法
- 交叉编译libupnp,make时提示libtool: eval: line 944: syntax error near unexpected token `|'的解决办法