免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4351 | 回复: 5
打印 上一主题 下一主题

关于windows下编译oci程序的? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-06-26 22:43 |只看该作者 |倒序浏览
在windows下除了vc以外还有没有别的编译器能够编译oci程序
有没有成功的,出来介绍一下,我平时用的编译器时Dev-c++,怎么设置总是在链接头文件时出错,
有如下代码:(未经过编译)

#include <iostream>
#include <string>

#include <occi.h>

using namespace std;
using namespace oracle:cci;

main()
{
    Environment *env = Environment::createEnvironment(Environment::OBJECT);
    Connection *conn = env->createConnection("scott","tiger";
    Statement *stmt = conn->createStatement();
    ResultSet *rs = stmt->executeQuery("SELECT ename FROM scott.ename";
    while(rs->next())
    {
         string ename = rs->getString(1);
         cout<<"ename is "<< ename << endl;
         
    }
}

论坛徽章:
0
2 [报告]
发表于 2006-06-27 12:45 |只看该作者

回复 1楼 ketos 的帖子

我用cygwin的g++编译成功。
是不是需要装oracle客户端才行? 我机器上装了oracle8的客户端。
编译时得指定oci.h的位置。

论坛徽章:
0
3 [报告]
发表于 2006-06-27 14:53 |只看该作者
可是我本机是装有ora9.2的,而且Dev-c++编译c++是用的也是g++,在编译环境的设置里已经把那些目录的地址都指了,你所指的"编译时得指定oci.h的位置"。是指程序里面include时要指明绝对路径,还是在编译器里面设置!

论坛徽章:
0
4 [报告]
发表于 2006-07-04 11:34 |只看该作者
# following two variable set in make.rules. I think it should be ok to put them
# in makefile if you have no access to /usr/local/lib/make/make.rules
ORACLE_INCLUDE = -I/opt/app/oracle/product/8.1.7/rdbms/demo -I/opt/app/oracle/product/8.1.7/rdbms/public
ORACLE_LIB = /opt/app/oracle/product/8.1.7/lib


# following is an excerpt from makefile for solaris (SunOS **** 5.8
# Generic_108528-27 sun4u sparc SUNW,Netra-T4 )

CCC = CC
CPPFLAGS = -g -mt

# For windows
# CCC = g++
# CPPFLAGS = -g -Ic:/oracle/ora81/oci/include

.SUFFIXES: .cc .o

.cc.o:
        $(COMPILE.cc) $<

PRODUCTS =                 \
        testocisql

all: $(PRODUCTS)

testocisql := CPPFLAGS += $(ORACLE_INCLUDE)

OBJ_TESTOCISQL =                                                                \
        dtorerror.o                                                                        \
        exceptionbase.o                                                                \
        exoci.o                                                                                \
        ociconnection.o                                                                \
        ocisql.o                                                                        \
        testocisql.o

testocisql := CPPFLAGS += $(ORACLE_INCLUDE)

testocisql: $(OBJ_TESTOCISQL)
        $(CCC) $(CPPFLAGS) $(OBJ_TESTOCISQL) -L$(ORACLE_LIB) -lclntsh -lnsl -ldl -o $@
#        for windows
#        $(CCC) $(CPPFLAGS) $(OBJ_TESTOCISQL) -LC:/Oracle/Ora81/oci/lib/msvc -loci -o $@

.IGNORE:

clean:
        rm *.o
        rm $(PRODUCTS)

论坛徽章:
0
5 [报告]
发表于 2006-07-04 12:33 |只看该作者
原帖由 ketos 于 2006-6-27 14:53 发表
你所指的"编译时得指定oci.h的位置"。是指程序里面include时要指明绝对路径,还是在编译器里 ...

应该都可以,不过最好是在makefile(你所说的编译器里设置)

我没用过dev-C++,不过我猜它应该有导出makefile的功能,你可以导出来检查检查

论坛徽章:
0
6 [报告]
发表于 2006-07-04 14:10 |只看该作者
oci不挑编译器的吧。推荐watcom c/c++。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP