【求助】Pro*C/C++预编译一直通不过 本帖最后由 sunbingbingfree2 于 2011-08-18 10:57:29 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 问题出在include="C:\Program Files\Microsoft Visual Studio\VC98\Include" 首先确保C:\Program Files\Microsoft Visual Studio\VC98\Include路径是正确的。 其次我猜是文件路径分割方式的原因。‘/'分隔符是跨平台的文件路径分割方式,而'\'只是window特有的。pro*c/c++ 工具是一个跨平台的开发工具,不出意外的话会采用‘/'分隔符。因此你把parse=fullinclude="C:\Program Files\Microsoft Visual Studio\VC98\Include"include="C:\oracle\precomp\public"include="C:\oracle\oci\include" 改为parse=fullinclude="C:/Program Files/Microsoft Visual Studio/VC98/Include"include="C:/oracle/precomp/public"include="C:/oracle/oci/include" 试试。 我试过了,还是提示一样的错误:系统默认选项值取自于: C:\oracle\precomp\admin\pcscfg.cfgPCC-F-02044, CMD-LINE:选项值非法或超出范围: Studio/VC98/Include 亲,你把pcscfg.cfg的内部全部清空!!!!包括以前的内容也全部清空!!!(清空前先备份一下) 那个那个,你再把makefile文件贴出来看看。咦?你是直接用proc +文件名编译的么? 我用oracle的pro*c/c++工具进行预编译的,也直接在命令行用过proc命令预编译,都是提示一样的错误。比如我虽然在pcscfg.cfg文件中已经加了一些设置:parse=fullinclude="C:\Program Files\Microsoft Visual Studio\VC98\Include"include="C:\oracle\precomp\public"include="C:\oracle\oci\include"但预编译时还是会提示错误:“打不开C的那些头文件”,于是我又在pro*c/c++工具的设置里面加上了对C的头文件路径的包含,于是就提示“系统默认选项值取自于: C:\oracle\precomp\admin\pcscfg.cfgPCC-F-02044, CMD-LINE:选项值非法或超出范围: Studio/VC98/Include”这个错误。所以我觉得我的pcscfg.cfg文件的设置完全没有发挥作用。我按你说的,把它清空了,错误提示不变。还有,你说的makefile文件是什么呢?我没有用过啊,亲我的代码非常简单,如下:#include <stdio.h>#include <string.h>#include <stdlib.h>#include <conio.h>#include <sqlca.h>void sql();int main(){ char username[10],password[10],server[10]; printf("输入用户名:\n"); gets(username); printf("输入口令:\n"); gets(password); printf("输入网络服务名:\n"); gets(server); EXEC SQL CONNECT:username IDENTIFIED BY:password USING:server; if(sqlca.sqlcode==0) printf("连接成功!\n"); else printf("%.*s/n",sqlca.sqlerrm.sqlerrml,sqlca.sqlerrm.sqlerrmc); getch(); sql(); EXEC SQL COMMIT RELEASE; return 0;}void sql(){ int dno; char dept_name[15],dept_loc[14]; printf("请输入部门号:"); scanf("%d",&dno); fflush(stdin); EXEC SQL SELECT dname,loc INTO :dept_name,:dept_loc FROM dept WHERE deptno = :dno; if(sqlca.sqlcode==0) printf("部门名:%s,部门位置:%s\n",dept_name,dept_loc);} 我的pcscfg.cfg文件里总共只有一下几句话:define=(WIN32_LEAN_AND_MEAN)parse=fullinclude=C:\oracle\precomp\publicinclude=C:\oracle\oci\includeinclude=C:\Program Files\Microsoft Visual Studio\VC98\Include不知道是我设置有问题还是怎么了,总是预编译通不过 编译通不过,总该有错误信息吧,为何不帖出来?????还有,你在vc6中预编译和用oracle自带的pro*c/c++工具,难道不是同一个吗?(我认为都是proc.exe)。你的这两种编译方式,一种是在vc6下,一种是命令行吧。 不好意思,你有错误信息的,sorry. 我最近也在学pro*c,如还有疑问,可以加我QQ,在我个人资料里。 求一SQL sqlplus如何切换输入法 Oracle数据库Session的问题V$SESSION(急~~~~~~~) 急救!安装问题 请教高手,我在sqlplus执行一个创建触发器的脚本,但却执行不到结束,那位能告诉我为什么? REDHAT 9 下安装ORACLE9I错误 上哪下载 Oracle Provider For OLE DB? vc6下关于proc编程链接出错的问题 带临时表的语句应怎样写? 请高手分析一下SQL语句。 Oracle CLOB转XMLTYPE出错 occi使用sql查询语句的问题
其次我猜是文件路径分割方式的原因。‘/'分隔符是跨平台的文件路径分割方式,而'\'只是window特有的。pro*c/c++ 工具是一个跨平台的开发工具,不出意外的话会采用‘/'分隔符。因此你把parse=full
include="C:\Program Files\Microsoft Visual Studio\VC98\Include"
include="C:\oracle\precomp\public"
include="C:\oracle\oci\include" 改为parse=full
include="C:/Program Files/Microsoft Visual Studio/VC98/Include"
include="C:/oracle/precomp/public"
include="C:/oracle/oci/include"
试试。
(清空前先备份一下)
咦?你是直接用proc +文件名编译的么?
我用oracle的pro*c/c++工具进行预编译的,也直接在命令行用过proc命令预编译,都是提示一样的错误。比如我虽然在pcscfg.cfg文件中已经加了一些设置:
parse=full
include="C:\Program Files\Microsoft Visual Studio\VC98\Include"
include="C:\oracle\precomp\public"
include="C:\oracle\oci\include"
但预编译时还是会提示错误:“打不开C的那些头文件”,于是我又在pro*c/c++工具的设置里面加上了对C的头文件路径的包含,于是就提示“系统默认选项值取自于: C:\oracle\precomp\admin\pcscfg.cfg
PCC-F-02044, CMD-LINE:选项值非法或超出范围: Studio/VC98/Include”这个错误。所以我觉得我的pcscfg.cfg文件的设置完全没有发挥作用。我按你说的,把它清空了,错误提示不变。
还有,你说的makefile文件是什么呢?我没有用过啊,亲我的代码非常简单,如下:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#include <sqlca.h>
void sql();
int main()
{
char username[10],password[10],server[10];
printf("输入用户名:\n");
gets(username);
printf("输入口令:\n");
gets(password);
printf("输入网络服务名:\n");
gets(server);
EXEC SQL CONNECT:username IDENTIFIED BY:password USING:server;
if(sqlca.sqlcode==0)
printf("连接成功!\n");
else
printf("%.*s/n",sqlca.sqlerrm.sqlerrml,sqlca.sqlerrm.sqlerrmc);
getch();
sql();
EXEC SQL COMMIT RELEASE;
return 0;
}void sql()
{
int dno;
char dept_name[15],dept_loc[14];
printf("请输入部门号:");
scanf("%d",&dno);
fflush(stdin);
EXEC SQL SELECT dname,loc INTO :dept_name,:dept_loc FROM dept
WHERE deptno = :dno;
if(sqlca.sqlcode==0)
printf("部门名:%s,部门位置:%s\n",dept_name,dept_loc);
}
我的pcscfg.cfg文件里总共只有一下几句话:define=(WIN32_LEAN_AND_MEAN)
parse=full
include=C:\oracle\precomp\public
include=C:\oracle\oci\include
include=C:\Program Files\Microsoft Visual Studio\VC98\Include不知道是我设置有问题还是怎么了,总是预编译通不过