昨天那个问题,我跑去 关于对oracle的pro*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的应该也是可以的。
历史博文
- 20081028 c# BackgroundWorker - 2009
- 20071009 Response ThreadAbortException - 2008
- 20070125 Comodo Firewall pcaudit 2 DLL injection - 2007
- 0303 dos 控制台 beginthreadex waveinout - 2006
- TortoiseCVS User's Guide翻译2TCVS简介3从何开始 - 2005
- SGIP和CMPP的差别消息头格式认证格式 - 2005
- 来自不同的GOOGLE访问 - 2005