VC环境下采用本机编译出错的问题。

[复制链接]
查看11 | 回复3 | 2005-10-30 17:05:33 | 显示全部楼层 |阅读模式
环境: Windows XP SP2 + Oracle 9.2.0.8
VC安装路径: E:Program FilesMicrosoft Visual StudioVC98
ORACLE_HOME:E

racleora91
alter system set plsql_native_library_dir = 'E

racleora91plsql
ative_by_Walter';
alter session set plsql_compiler_flags='NATIVE';
alter system set plsql_native_make_file_name= 'E

racleora91plsqlspnc_makefile.mk';
alter system set plsql_native_c_compiler='E:Program FilesMicrosoft Visual StudioVC98BinCL.EXE';
alter system set plsql_native_make_utility='E:Program FilesMicrosoft Visual StudioVC98BinNMAKE.EXE /NOLOGO';
alter system set plsql_native_linker='E:Program FilesMicrosoft Visual StudioVC98BinLINK.EXE';
alter procedure test.native_com compile;
show errors;
报错:
PLS-00923: 本机编译失败:make:spdtexmk:E

racleora91plsqlspnc_makefile.mk(70) : fatal error U1001: syntax error : illegal character '.' in macro
看起来是spnc_makefile.mk有问题,贴出其内容:
# Makefile for natively compiled PL/SQL sources.
#
#Copyright (c) 1995, 2000 by Oracle Corporation
#NAME
#pnc_makefile.mk
#DESCRIPTION
#This file is used to compile C files generated
#as a result of native compilation of PL/SQL
#programs.
#
#
#MODIFIED (MM/DD/YY)
# sylin07/16/02 - 2451985 Rename INCLUDE to NCOMPINCLUDE
# sylin07/16/02 - 2451978 Remove comments referring to gcc
# mvemulap 06/21/02 - remove VCINCLUDE; depend on system INCLUDE and LIB
# mvemulap 04/09/01 - OPTIMIZE=-xO1
# mvemulap 04/05/01 - always make the target
# mvemulap 03/16/01 - fix merge error
# nmantrav 01/03/01 - Use SUNWspro6.1 cc.
# mvemulap 01/12/01 -remove .c file
# kmuthukk 12/06/00 - revert back to unoptimized as default
# kmuthukk 12/04/00 - include path must have $ORACHOME/plsql/public
# kmuthukk 12/04/00 - set optimize to -O2
# kmuthukk 12/04/00 - use ORACLE_HOME instead of SRCHOME
# mvemulap 10/27/00 - no echo
# kmuthukk 04/12/99 - compile optimized
# mvemulap 03/13/99 - creation
I_SYM=/I
PLSQLHOME=$(ORACLE_HOME)/plsql/
ORACLELIB=$(ORACLE_HOME)/lib/
# PLSQL include
PLSQLINCLUDE=$(PLSQLHOME)include/
PLSQLINCLUDEH=$(I_SYM)$(PLSQLINCLUDE)
# PLSQL public
PLSQLPUBLIC=$(PLSQLHOME)public/
PLSQLPUBLICH=$(I_SYM)$(PLSQLPUBLIC)

#
# File extensions
#
SO_EXT=dll
OBJ_EXT=obj
SRC_EXT=c
LOG_EXT=nlg
#
# C compiler flags
#
NCOMPINCLUDE=$(PLSQLINCLUDEH) $(PLSQLPUBLICH)
PFLAGS=$(NCOMPINCLUDE)
NOLOGO=/nologo
CFLAGS=$(OPTIMIZE) $(PFLAGS) $(PIC) $(NOLOGO)
RM=rm
MV=mv
#
# Specify C Compiler
#
CC=cl
#
# Compile Rule
#
COMPO=$(CC) $*.$(SRC_EXT) /c /Fo$*.$(OBJ_EXT) $(CFLAGS)
COMPILE.c=COMPO
#
# Specify Linker and Linker flags
#
LD=link
SHARED_CFLAG=-dll
LDFLAGS=$(NOLOGO)
SO_COMMAND=$(LD) $(LDFLAGS) $(SHARED_CFLAG) $*.$(OBJ_EXT) -out:$@ $(ORACLELIB)orapls9.lib
.SILENT:
#
# To create shared libraries
#
%.$(SO_EXT): FORCE

$($(COMPILE.c)) > $*.$(LOG_EXT) 2>&1

-$(MV) $@ [email protected]

-$(RM) [email protected]

$(SO_COMMAND) > $*.$(LOG_EXT) 2>&1

$(RM) -f $*.$(SRC_EXT) $*.$(OBJ_EXT) $*.$(LOG_EXT)
FORCE:

其中报告出错的行为:
COMPILE.c=COMPO
我对VC的makefile不熟悉,这行的错误出在什么地方,要如何改写?
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
上面的已经逐步解决,已经到了MAKE的步骤了,目前错误是:
alter procedure test.native_com compile;
show errors;
报错:
PLS-00923: 本机编译失败: make:spdtexmk:NMAKE : fatal error U1077: 'E:PROGRA~1MIAF9D~1VC98BinCL.EXE' : return code '0x2'
查看LOG:NATIVE_COM__KS__0.nlg
里面的错误为:
NATIVE_COM__KS__0.c
E

racleora91plsqlpublicoratypes.h(30) : fatal error C1083: Cannot open include file: 'stddef.h': Invalid argument
这又是什么原因?
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
#2的问题还没有解决,而且真的很奇怪,我将spnc_makefile.mk里面的行拆解出来单独执行可以产生.obj文件:
cl NATIVE_COM__KS__0.c -c -Fo NATIVE_COM__KS__0.c -G6 -GD -O1 -Og -I "E

racleora91plsqlinclude" -I "E

racleora91plsqlpublic" -I "E:Program FilesMicrosoft Visual StudioVC98ATLINCLUDE";"E:Program FilesMicrosoft Visual StudioVC98INCLUDE";"E:Program FilesMicrosoft Visual StudioVC98MFCINCLUDE" /nologo
可是采用alter procedure test.native_com compile时LOG中总是记录:
NATIVE_COM__KS__0.c
E:oracleora91plsqlpublicoratypes.h(30) : fatal error C1083: Cannot open include file: 'stddef.h': Invalid argument
打了VSSP6的包还是报错。
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
您是如何解决第一个问题的?我就是第一个问题还是......
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行