2004-5-9 11:03
mayard8
请问高手一个pro*c预编译问题。<br />我现在的系统环境是Solaris9 + Oracle8.1.7,安装了gcc 3.3.2 for Solaris 9 Intel包。写了一段pro*c的程序(不存在语法问题,是以前开发过的项目,只不过是在windows环境下开发的),打算实现在Solaris下面也能正常编译运行。<br />××××××××××××××××××××××××××××××××××××<br />1.以下是对应的.pc原程序部分代码:<br /> EXEC SQL <br /> SELECT MESENAIYOU<br /> INTO :sMESENAIYOU<br /> FROM MS_MSG<br /> WHERE MESE_CD = :msg;<br />××××××××××××××××××××××××××××××××××××<br />2.以下是以前在windows下面编译后的.c文件对应的代码:<br /> /* EXEC SQL <br /> SELECT MESENAIYOU<br /> INTO :sMESENAIYOU<br /> FROM MS_MSG<br /> WHERE MESE_CD = :msg; */ <br /><br />{<br /> struct sqlexd sqlstm;<br /> sqlstm.sqlvsn = 10;<br /> sqlstm.arrsiz = 2;<br /> sqlstm.sqladtp = &sqladt;<br /> sqlstm.sqltdsp = &sqltds;<br /> sqlstm.stmt = "select MESENAIYOU into :b0 from MS_MSG where MESE_CD=:b1";<br /> sqlstm.iters = (unsigned int )1;<br /> sqlstm.offset = (unsigned int )69;<br /> sqlstm.selerr = (unsigned short)1;<br /> sqlstm.cud = sqlcud0;<br /> sqlstm.sqlest = (unsigned char *)&sqlca;<br /> sqlstm.sqlety = (unsigned short)256;<br /> sqlstm.occurs = (unsigned int )0;<br /> sqlstm.sqhstv[0] = ( void *)sMESENAIYOU;<br /> sqlstm.sqhstl[0] = (unsigned int )161;<br /> sqlstm.sqhsts[0] = ( int )0;<br /> sqlstm.sqindv[0] = ( void *)0;<br /> sqlstm.sqinds[0] = ( int )0;<br /> sqlstm.sqharm[0] = (unsigned int )0;<br /> sqlstm.sqadto[0] = (unsigned short )0;<br /> sqlstm.sqtdso[0] = (unsigned short )0;<br /> sqlstm.sqhstv[1] = ( void *)msg;<br /> sqlstm.sqhstl[1] = (unsigned int )0;<br /> sqlstm.sqhsts[1] = ( int )0;<br /> sqlstm.sqindv[1] = ( void *)0;<br /> sqlstm.sqinds[1] = ( int )0;<br /> sqlstm.sqharm[1] = (unsigned int )0;<br /> sqlstm.sqadto[1] = (unsigned short )0;<br /> sqlstm.sqtdso[1] = (unsigned short )0;<br /> sqlstm.sqphsv = sqlstm.sqhstv;<br /> sqlstm.sqphsl = sqlstm.sqhstl;<br /> sqlstm.sqphss = sqlstm.sqhsts;<br /> sqlstm.sqpind = sqlstm.sqindv;<br /> sqlstm.sqpins = sqlstm.sqinds;<br /> sqlstm.sqparm = sqlstm.sqharm;<br /> sqlstm.sqparc = sqlstm.sqharc;<br /> sqlstm.sqpadto = sqlstm.sqadto;<br /> sqlstm.sqptdso = sqlstm.sqtdso;<br /> sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);<br />}<br />××××××××××××××××××××××××××××××××××××<br />3.现在的问题是我在Solaris下预编译后,生成了对应的.c文件,但是那部分sql语句并没有发生任何变化。这样一来,在接下来用gcc进行编译的时候肯定会出问题的。<br />/usr/local/bin/cpp xxxx.pc -o xxxx.c -I /oracle/precomp/public<br />我怀疑是这句命令写的不对,请高手帮忙指点一下。
2004-5-9 18:51
无双
usr/local/bin/cpp xxxx.pc -o<br /><br />?????<br /><br />pro*c有pro*c的预编译器 而不是使用gcc编译器<br /><br />建议google查找这些资料
2005-5-27 11:45
javantsky
oracle会提供一个叫“proc”的编译命令,在安装oracle客户端的时候要求自己选择。<br /><br />如下: proc USERID=test/test@ora9 iname=your.pc include=${ORACLE_HOME}$/precomp/public THREADS=YES SQLCHECK=SEMANTICS<br /><br />编译完后会在同目录下生成your.c文件,然后就可以用gcc来编译该文件了<br /><br />解答完毕<!--emo&^_^--><img src='style_emoticons/default/happy.gif' border='0' style='vertical-align:middle' alt='happy.gif' /><!--endemo-->
2005-5-27 12:33
无双
<!--emo&:rose:--><img src='style_emoticons/default/rose.gif' border='0' style='vertical-align:middle' alt='rose.gif' /><!--endemo-->
页:
[1]
Powered by Discuz! Archiver 5.5.0
© 2001-2006 Comsenz Inc.