昨天那个问题,我跑去 关于对oraclepro*C的支持 http://61.186.70.240:8080/topic.jsp?forumID=7&topic=110&replynum=last 

请教版主:

MAGIC C++ PRO*C编程失败的尝试
请版主帮我看看,这是我一下午的调试,结果失败了,
http://www.yippeesoft.com/blog/p/magiccprocerr.php
我不知道怎么链接LIB了,谢谢!!

版主回答:

真巧,我也用业余时间尝试过cygwin + pro*c 开发。
根据cygwin 自带的文档中的“Linking Against DLLs”一节,
我尝试了以下操作试图将oracle 带的lib转为cygwin 下可以用的库
echo EXPORTS > foo.def
nm orasql9.lib &line; grep \’ T _\’ &line; sed \’s/.* T _//\’ >> orasql9.def
dlltool –def orasql9.def –dllname orasql9.dll –output-lib orasql9.a
得到orasql9.a后再进行链接,这是理论上的方法。
很可惜,链接得到exe 文件后,无法正确执行,报告说是cygwin.dll版本不兼容,网上好像有人尝试成功过。

我又找资料:C语言写Python extension实践 limodou的学习记录

下载pexport。这里有一个更新一些的0.43版本。解压后有一个执行码放在你能在命令上找得到的地方就行了。我放在了cygwin/bin目录下了。
得到Python23.dll。为了工作方面,我建了一个工作目录,将dll拷贝到这个目录下。
进入命令行窗口。进不进入cygwin环境无所谓,因此我已经把cygwin/bin的目录加入到PATH中去了。
运行:pexports python23.dll >python23.def
运行:dlltool –dllname python23.dll –def python23.def –output-lib libpython23.a
libpython23.a拷贝到python安装目录下的libs子目录中。其实拷不拷都无所谓,这样作只是为着以后再用方便。

不过按照版主的方法和他的方法两个得出的.A文件不一致。echo EXPORTS > foo.def 应该改成 echo EXPORTS >orasql9.def

但是无论我怎么设置 LINK,如果在 OBJECT/LIBARY MODUALES输入 orasql9.a,结果总是变成 ,orasql9.a

参考文档:

Cygwin环境下的gcc编译器编译Informix ESQ/C程序  http://www.gbunix.com/htmldata/2005_06/2/11/article_1230_1.html

" Windows 中用 GCC 编译 DB2 UDB 存储过程" 
http://www-900.ibm.com/developerWorks/cn/dmdd/library/techarticles/0306haungs/0306haungs.shtml 

limodou的学习记录  http://www.donews.net/limodou/archive/2004/04/12/11800.aspx 

我总是觉得DB2的可以,那么ORACLE的应该也是可以的。

历史博文

标签:, , , ,
六月 29, 2005 at 10:38 上午 by yippee 1,040 次
Category: Dev
Tags: , , , ,