登录 用户中心() [退出] 后台管理 注册
   
您的位置: 首页 >> 程序员学前班[不再更新,只读] >> 主题: kylix的动态库 + C/C++的动态库 + linux +mysql 调用 + sqlite     [回主站]     [分站链接]
标题
kylix的动态库 + C/C++的动态库 + linux +mysql 调用 + sqlite
clq
浏览(0) + 2006-04-10 23:17:21 发表 编辑

关键字:

kylix的动态库 + C/C++的动态库 + linux +mysql 调用 + sqlite !

光看这个题目就不是一个人人都能碰到的“机会”。我很“幸运”的赶上了。今天晚了先说一下难点吧。 最关键的在于C++的 linux 动态库是不能被当前的 kylix3 正确调用的--至少这是我的结论,比较痛苦的时编译器和“我的神”都没有告诉你这一点。我是在老是得到“...gxx_person..”不存在的这个错误时发现的,出现这个错误时 google 告诉我要用 g++ 编译,或者用 gcc 时使用 -lstdc++ 选项,总之是要使用标准C++库(后来我才比较肯定它的意思至少在 redhat9 自带的编译器中是“您使用了C++语法,但却试图当作 C 来编译”的意思),这时您换用 C++ 来编译时得到的so文件是正确的....但是它不能被 kylix 的宿主程序正确调用,它会在你启动程序时死QQ。那么怎样写出一个纯C的 linux 动态库呢,我小心地去掉了所的标准C++调用,但是在我启动 kylix 的宿主程序时,这个错误始终阴魂不散的出现,这时有个很特别的现象,不改动任何代码,只要不include mysql的头文件就能正确运行,反之则不行,即使我用ldd命令看到这个so文件始终只使用了两个其他的最基本so。我只好一边骂娘一边告诉经理mysql的代码中可能含有C++代码。

今天我抖擞精神决定用sqlite替换mysql,sqlite的代码可不那么好编译,我甚至用了devc++来生成我的make文件。千辛万苦编译好后,一运行那个kylix程序,两眼一黑....那个阴魂又出现了!!!我简直不敢相信自己的眼睛,因为sqlite的含源码一起编译的,决对不可能包含C++代码!我重复了无数次...最后只好一点点增加/或去掉那些可能出错的代码,终于发现某种类似C++语法会引起这种情况,但它在C下也是可以运行的。最后听 google 说后缀名可能会使编译器采用C++语法,这个我是知道的,不过从来没发现有什么用处--因为我一向喜欢把C++和纯C混用。好了,最后的解决办法出场了,将文件的CPP后缀名更改为C后,并且不加载任何C++库,最后用gcc来编译--我的so终于可以用了!最后想想mysql库可能也可以这样吧......的确如此。

最后“赠送”两个技巧:redhat自带的mysql库不能连接当前的mysql5;同时拥有localhost的权限有可能不能访问127.0.0.1的mysql数据库,最好显式的加入访问127.0.0.1的权限。好了,这个玩意的代码是比较重要的。改天贴上,一定!

clq
2006-4-11 21:59:32 发表 编辑

附件[暂不开放下载]
代码来了!

http://clq.3322.org/bbs/attachment/Mon_20064/1144763972.zip

clq
2006-4-11 22:02:38 发表 编辑

代码是有些问题的,主要是返回数据不能太大,嘻嘻...仅供参考。
clq
2006-4-11 22:09:53 发表 编辑

[图片]
test


总数:3 页次:1/1 首页 尾页  
总数:3 页次:1/1 首页 尾页  


所在合集/目录



发表评论:
文本/html模式切换 插入图片 文本/html模式切换


附件:



NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.

Copyright © 2005-2020 clq, All Rights Reserved
版权所有
桂ICP备15002303号-1