LoveUnix » 编程开发 & Rational » 请教一个pro*c预编译问题。
让LU留住您的每

一天 让LU博客留住您的每一天
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 = &amp;sqladt;<br /> sqlstm.sqltdsp = &amp;sqltds;<br /> sqlstm.stmt = &quot;select MESENAIYOU into :b0  from MS_MSG where MESE_CD=:b1&quot;;<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  *)&amp;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, &amp;sqlctx, &amp;sqlstm, &amp;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.