当前位置: 技术问答>linux和unix
PRO C问题求教?help me!!
来源: 互联网 发布时间:2015-04-12
本文导语: 我的系统是IBM AIX4,oracle9i 只要程序中用线程#include ,不管是用系统的MAKEFILE,还是用proc 直接编译都出现以下错误?求各位大侠帮忙 proc japc.pc Pro*C/C++: Release 9.2.0.1.0 - Production on Fri Jul 18 15:17:16 2003 Copyright (c)...
我的系统是IBM AIX4,oracle9i
只要程序中用线程#include ,不管是用系统的MAKEFILE,还是用proc 直接编译都出现以下错误?求各位大侠帮忙
proc japc.pc
Pro*C/C++: Release 9.2.0.1.0 - Production on Fri Jul 18 15:17:16 2003
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
System default option values taken from: /home/oracle/app/product/9.2.0.1/precog
Syntax error at line 116, column 2, file /usr/include/sys/var.h:
Error at line 116, column 2 in file /usr/include/sys/var.h
__cptr64 ve_lock; /* RO: ptr to end of recordlock table*/
.1
PCC-S-02201, Encountered the symbol "__cptr64" when expecting one of the followi
ng:
} char, const, double, enum, float, int, long, ulong_varchar,
OCIBFileLocator OCIBlobLocator, OCIClobLocator, OCIDateTime,
OCIExtProcContext, OCIInterval, OCIRowid, OCIDate, OCINumber,
OCIRaw, OCIString, short, signed, sql_context, sql_cursor,
struct, union, unsigned, utext, uvarchar, varchar, void,
volatile, a typedef name,
后面还有一大堆类似错误,反正var.h里面的定义变量全错。
只要程序中用线程#include ,不管是用系统的MAKEFILE,还是用proc 直接编译都出现以下错误?求各位大侠帮忙
proc japc.pc
Pro*C/C++: Release 9.2.0.1.0 - Production on Fri Jul 18 15:17:16 2003
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
System default option values taken from: /home/oracle/app/product/9.2.0.1/precog
Syntax error at line 116, column 2, file /usr/include/sys/var.h:
Error at line 116, column 2 in file /usr/include/sys/var.h
__cptr64 ve_lock; /* RO: ptr to end of recordlock table*/
.1
PCC-S-02201, Encountered the symbol "__cptr64" when expecting one of the followi
ng:
} char, const, double, enum, float, int, long, ulong_varchar,
OCIBFileLocator OCIBlobLocator, OCIClobLocator, OCIDateTime,
OCIExtProcContext, OCIInterval, OCIRowid, OCIDate, OCINumber,
OCIRaw, OCIString, short, signed, sql_context, sql_cursor,
struct, union, unsigned, utext, uvarchar, varchar, void,
volatile, a typedef name,
后面还有一大堆类似错误,反正var.h里面的定义变量全错。
|
不会是头文件的问题,给你一例:(RS/6000 xlc5.1编译通过
CC=xlc
CXX=xlC
PROC=$(ORACLE_HOME)/bin/proc code=ANSI_C parse=none
PCXX=$(ORACLE_HOME)/bin/proc code=cpp parse=none cpp_suffix=cpp
EXE=paytest.exe
OBJ=paytest.o payobj.o paysock.o paythread.o payagree.o
ORA_LIB_DIR=-L$(ORACLE_HOME)/lib
ORA_LIB=-lclntsh
SYS_LIB=-lpthread
build:$(EXE)
$(EXE):$(OBJ)
$(CXX) -o $(EXE) $(OBJ) $(ORA_LIB_DIR) $(ORA_LIB) $(SYS_LIB)
paytest.o:paytest.cpp
$(CXX) -c paytest.cpp
payobj.o:payobj.cpp
$(CXX) -c payobj.cpp
paysock.o:paysock.cpp
$(CXX) -c paysock.cpp
paythread.o:paythread.cpp
$(CXX) -c paythread.cpp $(SYS_LIB)
payagree.o:payagree.cpp payagree.h
$(CXX) -c payagree.cpp
clean:
rm -f *.o $(EXE) core *.*.bak *.bak
CC=xlc
CXX=xlC
PROC=$(ORACLE_HOME)/bin/proc code=ANSI_C parse=none
PCXX=$(ORACLE_HOME)/bin/proc code=cpp parse=none cpp_suffix=cpp
EXE=paytest.exe
OBJ=paytest.o payobj.o paysock.o paythread.o payagree.o
ORA_LIB_DIR=-L$(ORACLE_HOME)/lib
ORA_LIB=-lclntsh
SYS_LIB=-lpthread
build:$(EXE)
$(EXE):$(OBJ)
$(CXX) -o $(EXE) $(OBJ) $(ORA_LIB_DIR) $(ORA_LIB) $(SYS_LIB)
paytest.o:paytest.cpp
$(CXX) -c paytest.cpp
payobj.o:payobj.cpp
$(CXX) -c payobj.cpp
paysock.o:paysock.cpp
$(CXX) -c paysock.cpp
paythread.o:paythread.cpp
$(CXX) -c paythread.cpp $(SYS_LIB)
payagree.o:payagree.cpp payagree.h
$(CXX) -c payagree.cpp
clean:
rm -f *.o $(EXE) core *.*.bak *.bak
|
试试threads=yes
另:oracleora81precompdemoproc有多线程的范例以及相应的makefile可参考。
另:oracleora81precompdemoproc有多线程的范例以及相应的makefile可参考。
|
估计是重复定义或环境变量的问题,我碰到过类似的情况但是在HP上
最后是环境变量的问题
最后是环境变量的问题
|
可能是你的头文件定义时候的位置有关,
我遇到过的情况是把自己定义的头文件一定要放到系统的头文件之后定义
比如你把 #include "var.h"
放在头文件引用的最后一个看看!
我遇到过的情况是把自己定义的头文件一定要放到系统的头文件之后定义
比如你把 #include "var.h"
放在头文件引用的最后一个看看!
|
可能是环境没有设置正确,将ORACLE 的用户设置为开放路径。
|
我以前也遇到过这种问题,记得解决办法好像就是换了一下包含头文件语句的位置。就OK了,你试一下吧。
|
请教你是把的!
|
-I(头文件所在的路径)会不会就好了呢?