linux能linux下运行vcs软件delphi7写的软件吗

[分享]像Delphi一样在Linux下写程序 - 查看主题 & Ubuntu中文论坛
&[ 19 篇帖子 ]&
&文章标题 : [分享]像Delphi一样在Linux下写程序发表于 :
0:19帖子: 53
送出感谢: 0 次
接收感谢: 0 次
不要以为我说的是那个Kylix。那个已经是比较遥远的东西了,在新的Linux里,基本什么也做不了。
目前在Linux里,能实现Delphi式开发的工具,似乎只有Lazarus了。以我的体验,最新版的Lazarus已经实现了大部分Delphi的优点,现在完全可以使用他来学习编程。
时间有限,所以我只写了个简单的Hello World程序。以后有时间再继续研究。然后再来跟大家分享成果。
这就是编程的整体环境了,介于D4-D7之间。
Hello World的运行效果
&文章标题 : 发表于 :
21:55帖子: 58438地址: 长沙
这颜色看久了会累的
没见一个中文呢。
_________________● 鸣学
&文章标题 : 发表于 :
0:19帖子: 53
送出感谢: 0 次
接收感谢: 0 次
中文的问题嘛,还没时间研究。界面的颜色也是一样。
虽然都可以订制,但是都要花时间研究的。
&文章标题 : 发表于 :
0:39帖子: 8273地址: ??????
送出感谢: 0 次
eexpress 写道:这颜色看久了会累的没见一个中文呢。全屏的就不会
这种配色我看了n年了
_________________PHP是最好的语言!不服来战!
&文章标题 : 发表于 :
0:39帖子: 8273地址: ??????
送出感谢: 0 次
testerhook 写道:中文的问题嘛,还没时间研究。界面的颜色也是一样。虽然都可以订制,但是都要花时间研究的。gtk2目前问题还是不少
建议用gtk1的ide,然后编译成gtk2
不过可以尝试下qt4的界面看看效果如何
_________________PHP是最好的语言!不服来战!
&文章标题 : 发表于 :
0:19帖子: 53
送出感谢: 0 次
接收感谢: 0 次
恩,我知道。不过最近在翻译Lazarus的wiki,没时间搞这些哦。
有空的话,能不能帮帮我呢?stlxv
&文章标题 : 发表于 :
12:25帖子: 689
送出感谢: 0 次
接收感谢: 0 次
好像lz的字体没什么问题,上次偶装起来文字全部挤在一起,难看死了,索性删掉了。
_________________Titainium
&文章标题 : 发表于 :
0:19帖子: 53
送出感谢: 0 次
接收感谢: 0 次
IDE的字体嘛,最好不要去改变环境选项里的默认语言设置。
等以后研究透了,一定写个教学。
&文章标题 : 发表于 :
0:39帖子: 8273地址: ??????
送出感谢: 0 次
testerhook 写道:恩,我知道。不过最近在翻译Lazarus的wiki,没时间搞这些哦。有空的话,能不能帮帮我呢?stlxv 要我帮你什么?
_________________PHP是最好的语言!不服来战!
&文章标题 : 发表于 :
0:19帖子: 53
送出感谢: 0 次
接收感谢: 0 次
帮我翻译wiki就行了。
&文章标题 : 发表于 :
21:55帖子: 39
送出感谢: 0 次
接收感谢: 0 次
editor里面不能输入中文,而且还跳字
&文章标题 : 发表于 :
22:17帖子: 9地址: 江苏南京
送出感谢: 0 次
接收感谢: 0 次
我还是比较看好mono,dot net才是王道
_________________身在L营心在W
&文章标题 : 发表于 :
17:32帖子: 234
送出感谢: 0 次
接收感谢: 0 次
请问一下这个图形界面和delphi的类库一样吗?
_________________十年磨一剑,霜刃未曾试。今日把示君,谁有不平事?
&文章标题 : 发表于 :
0:39帖子: 8273地址: ??????
送出感谢: 0 次
wth123456 写道:请问一下这个图形界面和delphi的类库一样吗?
用我一个也是用Delphi的朋友的话说:“不知道和Delphi有什么区别”
其实这个用的类库是LCL,Delphi的传统类库是VCL,这两个几乎是一样的。控件也有不少是能通用的。
_________________PHP是最好的语言!不服来战!
&文章标题 : 发表于 :
9:00帖子: 12
送出感谢: 0 次
接收感谢: 0 次
FinalBoy 写道:editor里面不能输入中文,而且还跳字
如何能够解决?
显示帖子 : 全部帖子1天7天2周1个月3个月6个月1年&排序 作者发表时间文章标题 升序降序&
&[ 19 篇帖子 ]&
正在浏览此版面的用户:没有注册用户 和 0 位游客
您 不能 在这个版面发表主题您 不能 在这个版面回复主题您 不能 在这个版面编辑帖子您 不能 在这个版面删除帖子您 不能 在这个版面提交附件
选择一个版面
------------------
公告/注意事项
& &新闻和通知
& &校园社团支持
& && &华东校区
& && &华南校区
& && &华北校区
& && &华中校区
& && &东北校区
& && &西北校区
& && &港澳台校区
& && &国外校区
& &软件推荐
& &非常任务
系统安装区
& &教学和常见问答
& && &课堂教学和培训
& &初学者园地 - 15.04
& &系统安装和升级
& && &新立得和软件源
& && &Wubi安装讨论
& &启动和引导
& &网卡问题以及网络和拨号
& && &校园网拨号
& &笔记本、UMPC支持
& &手机和平板
& && &Ubuntu移动应用开发
& &常用硬件支持
& &系统架构支持
配置美化区
& &字体美化和中文支持
& && &个人配置文件存放点
& &桌面特效
& &窗口管理器
& &屏幕抓图
& &办公、图像、机械电子设计等
& && &Vim和Emacs
& &因特网相关软件
& &影音多媒体
& &Wine及其分支
& &游戏和游戏模拟器
& &虚拟机和虚拟化
& &其它类软件
服务器管理
& &服务器基础应用
& &数据库管理
& &服务器维护和硬件相关
& &Ubuntu VPS
参与Ubuntu开发
& &软件和文档翻译
& &编译或打包
& &Ubuntu错误报告
程序设计区
& &Shell脚本
& &GTK+和QT
& &软件/网站开发
& && &Python/Php/Perl
& && &C/C++/Java
& &内核及嵌入式开发
& &开源小工具
& &Ubuntu 15.10
& &Ubuntu 14.10
& &Ubuntu 14.04 LTS
& &Ubuntu 12.04 LTS
& &Ubuntu 10.04 LTS
& &老旧版本支持
衍生发行版
& &Ubuntu GNOME
& &Kubuntu
& &Xubuntu & Lubuntu
& &Ubuntu中文衍生版
& && &Deepin
& && &UbuntuKylin
& &Ubuntu国外衍生版
& && &Mint
& &Ubuntu衍生版制作
& &其它类Unix OS发行版
& && &Arch发行版
& && &Debian发行版
& && &OpenSUSE发行版
& &深度PK版
& &Ubuntu故事和感慨
& &Full Circle开源杂志
分享交流区
& &同城交流
& &线下活动专版
& &Ubuntu宣传推广
& &论坛管理
& && && &Ubuntu中文网上商店请问win7系统装了虚拟机linux,那么只能在linux下安装运行的软件可以安装在这个虚拟机系统中吗?_百度知道
请问win7系统装了虚拟机linux,那么只能在linux下安装运行的软件可以安装在这个虚拟机系统中吗?
提问者采纳
你的问题有点不清楚。在linux下运行的程序当然可以在虚拟的linux中运行
哦。因为有的软件没有windows版本的,所以我想装个双系统,又觉得太复杂,就想用虚拟机代替
提问者评价
谢谢大家对我的帮助!
其他类似问题
15人觉得有用
为您推荐:
其他4条回答
可以的,想安装很多程序,就要确保linux系统的空间足够。 虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。
一种安装在Windows上的虚拟环境,就被称为linux虚拟机。它实际上只是个文件而已,是虚拟的linux环境,而非真正意义上的操作系统。但是它们的实际效果是一样的。所以安装在虚拟机上使用好。
vmware下安装Linux 我们在实际的Windows XP中(宿主计算机)再虚拟出一台电脑(虚拟机),并在上面安装Linux系统,这样,你就可以放心大胆地进行各种Linux练习而无须担心操作不当导致宿主机系统崩溃了。并且你可以举一反三,将一台电脑变成三台、四台,再分别安装上其他的系统。(运行虚拟机软件的操作系统叫Host OS,在虚拟机里运行的操作系统叫Gue...
完全可以。
就是说这个虚拟机和真正的服务器上的linux系统功能是一样的,只是是虚拟的而已,对吗?
可以啊~我都试过了
您可能关注的推广
win7系统的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
UID空间积分0 积分82阅读权限10帖子精华可用积分82 信誉积分100 专家积分0 在线时间2 小时注册时间最后登录
白手起家, 积分 82, 距离下一级还需 118 积分
帖子主题精华可用积分82 信誉积分100 专家积分0 在线时间2 小时注册时间最后登录
论坛徽章:0
怎么让其他用户也能运行root用户安装的软件?
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
UID空间积分0 积分5811阅读权限100帖子精华可用积分5811 信誉积分128 专家积分319 在线时间23 小时注册时间最后登录
帖子主题精华可用积分5811 信誉积分128 专家积分319 在线时间23 小时注册时间最后登录
论坛徽章:0
原帖由 pzz68 于
18:27 发表
怎么让其他用户也能运行root用户安装的软件?
這個問題可以反過來問一下, 請問你遇到了怎樣一般使用者怎樣無法使用 root 安裝的軟件 ? 該情況描述甚至錯誤訊息為何呢
如果真的愛一個作業系統& & 怎能不害怕不再能使用它
而我們必須接受現實&&於是長大了 寂寞就是沒有了機會再用它
比沒有電腦還要寂寞&&即使短暫使用也會刻骨銘心
而那些點亮我們生命的作業系統&&就彷彿電影內發生在暹邏的愛情故事
&&To all the Linux that bring us to kernel.
UID空间积分0 积分82阅读权限10帖子精华可用积分82 信誉积分100 专家积分0 在线时间2 小时注册时间最后登录
白手起家, 积分 82, 距离下一级还需 118 积分
帖子主题精华可用积分82 信誉积分100 专家积分0 在线时间2 小时注册时间最后登录
论坛徽章:0
原帖由 kenduest 于
18:35 发表
這個問題可以反過來問一下, 請問你遇到了怎樣一般使用者怎樣無法使用 root 安裝的軟件 ? 該情況描述甚至錯誤訊息為何呢
你说的什么意思? 不明白, 请详解.
在root下安装了USB接口的ADSL驱动, 并做了个shell脚本, 执行这个脚本就能能上网.&&但在一般用户下执行这个脚本却联不上网, 为什么?
[ 本帖最后由 pzz68 于
20:05 编辑 ]
我为你翻山越岭, 却无心看风景.
UID空间积分0 积分10176阅读权限100帖子精华可用积分10176 信誉积分100 专家积分8 在线时间359 小时注册时间最后登录
帖子主题精华可用积分10176 信誉积分100 专家积分8 在线时间359 小时注册时间最后登录
论坛徽章:0
chmod a+x FILE
这个是最快的方法了
提问必看:
UID空间积分0 积分82阅读权限10帖子精华可用积分82 信誉积分100 专家积分0 在线时间2 小时注册时间最后登录
白手起家, 积分 82, 距离下一级还需 118 积分
帖子主题精华可用积分82 信誉积分100 专家积分0 在线时间2 小时注册时间最后登录
论坛徽章:0
在root下安装了USB接口的ADSL驱动, 并做了个shell脚本, 执行这个脚本就能能上网.&&但在一般用户下执行这个脚本却联不上网, 为什么?
UID空间积分0 积分18阅读权限10帖子精华可用积分18 信誉积分100 专家积分0 在线时间5 小时注册时间最后登录
白手起家, 积分 18, 距离下一级还需 182 积分
帖子主题精华可用积分18 信誉积分100 专家积分0 在线时间5 小时注册时间最后登录
论坛徽章:0
sudo同时设好帐户的权限即可不用密码
UID空间积分0 积分82阅读权限10帖子精华可用积分82 信誉积分100 专家积分0 在线时间2 小时注册时间最后登录
白手起家, 积分 82, 距离下一级还需 118 积分
帖子主题精华可用积分82 信誉积分100 专家积分0 在线时间2 小时注册时间最后登录
论坛徽章:0
????????????????
UID空间积分0 积分5811阅读权限100帖子精华可用积分5811 信誉积分128 专家积分319 在线时间23 小时注册时间最后登录
帖子主题精华可用积分5811 信誉积分128 专家积分319 在线时间23 小时注册时间最后登录
论坛徽章:0
原帖由 pzz68 于
21:09 发表
????????????????
不就是您的程序只有 root 身份才可以運行,一般使用者無特權所以無法使用,不是呼 ? 這就像為何只有 root 可以新增帳號,但是一般使用者無法新增帳號道理一樣。
請這位朋友先做個功課,瞭解一下 sudo 程式用途後應該可以有個完美答案..
如果真的愛一個作業系統& & 怎能不害怕不再能使用它
而我們必須接受現實&&於是長大了 寂寞就是沒有了機會再用它
比沒有電腦還要寂寞&&即使短暫使用也會刻骨銘心
而那些點亮我們生命的作業系統&&就彷彿電影內發生在暹邏的愛情故事
&&To all the Linux that bring us to kernel.
UID8346556空间积分0 积分24阅读权限10帖子精华可用积分24 信誉积分100 专家积分0 在线时间31 小时注册时间最后登录
白手起家, 积分 24, 距离下一级还需 176 积分
帖子主题精华可用积分24 信誉积分100 专家积分0 在线时间31 小时注册时间最后登录
论坛徽章:0
所谓授之于鱼,不如授人于渔!嘿嘿!
我以前也是一碰到问题就问!
结果思维产生惰性!!
吃爱拿油腻也渴死
UID317550空间积分0 积分607阅读权限20帖子精华可用积分607 信誉积分100 专家积分5 在线时间0 小时注册时间最后登录
丰衣足食, 积分 607, 距离下一级还需 393 积分
帖子主题精华可用积分607 信誉积分100 专家积分5 在线时间0 小时注册时间最后登录
论坛徽章:0
chmod+sudo
北京皓辰网域网络信息技术有限公司. 版权所有 京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:
广播电视节目制作经营许可证(京) 字第1234号
中国互联网协会会员&&联系我们:
感谢所有关心和支持过ChinaUnix的朋友们
转载本站内容请注明原作者名及出处独家:Delphi 2010初体验,是时候抛弃Delphi 7了
发表于 15:33|
摘要:Delphi 2010已于近日由Embarcadero公司发布。作者Kim Madsen作为一名资深的Delphi开发者,在他的博客中谈到了Delphi 2010的新性能、它的使用感受以及对Delphi语言未来的期望。
Delphi 2010已于近日由Embarcadero公司发布。作者Kim Madsen作为一名资深的Delphi开发者,在他的博客中谈到了Delphi 2010的新性能、它的使用感受以及对Delphi语言未来的期望。博文如下:
Delphi 2010使用的第一感觉是:是时候为它抛弃Delphi 7了。
Delphi 2010比以往的Delphi版本都要快,而且它保留了一些Delphi 7的特性,比如可以将旧的条形控件(componentbar)找回。但这同时也带了相关的问题(比如在重启Delphi 2010之后componentbar的位置看起来挪动了),不过这只是细节问题,相信在之后的修补中会解决这个问题。
在D2005, D2006, D2007和 D2009中,IDE中都有不少漏洞,以至于内存会迅速被泄露导致IDE以及电脑的其他部分特别地慢。尽管从D2005到D2009,Delphi已经做了很多努力,但这种漏洞仍然存在,开发者不得不经常重启IDE来避免内存泄露。
然而在Delphi 2010中我们欣喜地发现内存泄露的问题得到了解决,以前我从事很复杂的项目开发,很难做到个把小时都不重启电脑,但现在已经不用重启了。另外,IDE的响应也得到了显著的提升,启动时间比D2009快了不少。
D2010还有许多其他组件的性能提升,但我个人感觉新增的手势支持(gesture support)是个很有趣的特性。手势支持(gesture support)的意思是你可以做出特殊的鼠标移动来向应用发送一个命令信号。就好像是用的不是鼠标而是触摸屏,因此也有可能做出像iPhone的触摸屏一样的界面。我想这是一个很重要的特性,除了手势性能以外,更大的意义在于它表达出了Delphi在桌面端的发展方向。
以前我曾写博文诟病过Delphi在桌面领域的表现,因为像Adobe Flex和MS WPF等开发工具功能强大而齐全,可以以相对简单的方法开发出很酷的客户端应用,而用Delphi却很费劲;我也曾诟病过Delphi在服务器领域的表现,而且它的市场由于Java和.Net而大幅缩水,而且由于缺少跨平台的兼容性、抛弃传统的Kylix编辑器而丧失了Linux的支持,Delphi在竞争对手面前沦为开发者的末端选择。这种境况在今日仍然如此,但是在过去的六个月中,Embarcadero公司宣布计划将支持Mac和Linux的跨平台编译,无疑这是Delphi向前发展的一大步。
由于全新的手势支持以及跨平台的计划,Delphi在未来几年有望赢过竞争对手并重新夺回市场份额。当然这取决于跨平台特性的最终性能,而且Embarcadero也不应当放松对手势支持的控制和研发,毕竟这是它桌面应用的方向。
那么Delphi还应当在哪些方向继续努力呢?
*改良数据绑定。现在的Delphi唯一的绑定是用特殊的数据源绑定有意识的控制(TDataSource和TDBxxx组件)。这一特性在当年刚推出的时候非常酷,但是它现在已经被.Net和Adobe Flex/Flash 4超越,因为.Net和Adobe Flex/Flash 4有两种方式可以将任何属性绑定到其他属性。因此,需要抛弃现有的Delphi DB控制,增加先进的自动的两种绑定方式。
*优化现有的TCanvas和Device Contexts,从而可以将任何控制放在画布(Canvas)上,让画布自动浮动在3D空间。这将给开发者带来新的用户界面,比现有的2D更有感觉。举个例子:在显示器帧值一定的情况下,如果你想呈现产品清单软件中的多个产品的细节,你就要经常使用目录,点击列表中的项目以在窗口上显示产品的细节,或者添加许多产品标签才能实现。然而这两种方法都不能同时展现产品和信息。如果使用Apple CoverFlow会怎样呢:就可以在3D空间中展示产品信息了。结合手势控制和触摸屏,开发者使用手指就可以浏览产品。虽然它的硬件要求比2D更高,但是现在即便最普通的PC都可以满足这一要求。
在服务器端,我的期望是Delphi可以实现单一来源、多平台支持。
语言特性方面,我期望Delphi:
* XML和正则表达式成为语言的一部分。XML不消多说,正则表达式在字串匹配和许多应用使用的解析设备方面非常有用。为什么不让它们成为Delphi语法的一部分呢?实际上,查看XML的E4X EcmaScript,可以将XML直接整合到语言中,所以看起来Delphi应该可以很自然地使用XML。
除此之外,Embarcadero的开发者还应当考虑如何解决下面的任务来更好地做好Delphi的开发:
* 应用的打包和分配;
*尽管存在各种第三方安装工具,但如今分配到Win32环境还是很复杂。主要的原因是因为需要其他开发工具和语言来创建相关的安装脚本,而且这些脚本的更新周期很快,需要持续不断地更新。
*文档在源代码内提供了各种注释,因而某种程度上它已经成为了开发过程的一部分。我个人很讨厌这种方法,因为它将源散落得到处都是,而现在的文档则是分离式的也很不方便。因此IDE需要提供一种解决方式,既让文档同步,同时又能够将文档和源分开从而可以简单地将文档翻译到其他语言中。
推荐阅读相关主题:
网友评论有(0)
CSDN官方微信
扫描二维码,向CSDN吐槽
微信号:CSDNnews
相关热门文章Delphi for Linux中应用共享对象库
Delphi for Linux中应用共享对象库
  本文用通俗易懂的语言介绍Linux平台上共享对象库(SO)的基本概念及主要优点,通过剖析在Delphi for Linux中应用SO与在Delphi for Windows中应用DLL的异同,以编程实例讲述了Linux平台的SO库文件的组成、SO库文件的函数重载、特殊编译指令、采用Delphi for Linux创建SO的编程规则、使用前的Linux系统设置,以及在Delphi for Linux中用隐式或显式链接方法装入和使用SO函数的基本方法、经验及技巧,并对应用SO可能出现的问题进行了探讨和分析。
  一、共享对象库基本概念
  Delphi for Linux是Borland公司推出的基于Linux平台的、面向对象的可视化开发工具,是目前Linux平台上很好的应用开发工具。Delphi for Linux也称Kylix。大家用Kylix开发Linux应用程序时,可能使用过Linux操作系统本身带的大量SO文件。SO是一种特殊的运行文件,包含若干方法、对象和资源,它不能直接运行,但可以被Kylix应用程序或其它可执行文件动态调用。SO文件扩展名为.so,编译前源文件扩展名为.dpr。本文所举例子均在Red Hat Linux 7.3及Kylix 3.0环境下调试编译通过,并可正常运行。
  图1是Kylix主程序与SO库的层次关系图。从中可看出使用SO库有以下几个优点。
图1 Kylix主程序与SO库的层次关系图
  ◆ 多个Kylix程序或它的多个单元文件可通过接口共用一个SO库文件。另一方面,某一个Kylix程序,可通过多个接口使用多个SO库文件。这样,SO变成一种可共用的资源,实现真正的“资源共享”,大大缩小了Kylix应用程序的执行代码,增强了软件的可重用性。
  ◆ 将SO文件作为Kylix应用程序的公共调用模块设计时,由于其独立于应用程序,软件升级时只需修改SO库文件及编译SO,无需更改及重编译Kylix应用主程序。
  ◆ 不仅可使用Kylix编写SO库,还可使用C或C++等常用语言来编写,只要遵循特定的接口规范。
  二、共享对象库的创建
  1.SO库文件的构成
  SO库文件和Kylix标准单元文件的内部结构基本相同,也有声明、实现及初始化部分。区别之一在于SO库只是其它程序可以调用的方法(包括函数及过程)集合。区别之二库程序以library关键字而非project开头启动其项目文件;库程序包含有exports语句,其列出要向外部提供的导出函数及过程。下面是SO库文件代码的简单例子,用以说明其构成。
library MyFirstSO;usesSysUtils, classes ; { Delphi for Windows 中引用类库为Windows }function Add (A:Char;B:Char):Integer;cdecl;overload; beginResult := Ord (A) + Ord (B) ;end;function Add (A:Integer;B:Integer):Integer;cdecl;overload;beginResult := A + B ;end;function Double (N:Integer):Integer;cdeclbeginResult := N * 2;exportsAdd (A:Integer;B:Integer),Add (A:Char;B:Char) name 'AddChar',Double;
  2.SO库文件中的函数重载
  SO库也可以使用重载函数(即多个函数使用相同名称、不同参数),使用时需在重载的函数声明后标上overload指令。Kylix可以用原名称导出一个重载函数,在exports从句中表示其参数表。若要导出多个重载函数,则要在exports从句中用name字句指定不同名称,以区别重载。这可从上面的例子MyFirstSO中看出,Add是重载函数,为调用时区分,一个用原函数声明Add导出,另一个用AddChar导出。
  3.SO库的特殊编译指令
  编译后生成的SO库运行文件使用lib前缀和.so扩展名。考虑到实际命名规则与版本和支持符号链,Kylix在Object Pascal语言中引入了几个特殊编译指令,这些在Delphi中没有什么意义。库源文件MyFirstSO.dpr编译后产生的执行文件为libMyFirstSO.so。
  ◆ $SOPREFIX 改变名称前缀,默认为lib(正常库)或bpl(Kylix包)。用前缀区别两种库是因为Linux的库用单一扩展(.so)。
  ◆ $SOSUFFIX 在库名与扩展名之间增加文本,指定版本或其它信息。
  ◆ $SOVERSION 在扩展名之后增加版本号。
  ◆ $SONAME 表示相关符号链名,由编译器自动生成。
  例如,下列代码生成库libsimple.so.2.0.1和符号链libsimple.so.2。
library simple ;uses SysUtils,Classes;//函数定义省略{$SOVERSION '2.0.1'}{$SONAME 'libsimple.so.2'}
  三、共享对象库的使用
  Kylix应用程序使用SO库时,可以采用两种方式:一种是隐式链接(Implicit linking),也称静态装入;另一种是显式链接(Explicit Linking),也称动态装入。下面分别介绍这两种链接方式的使用方法、技巧及将窗体对象放入SO库的技术。
  1.使用前的系统设置
  自定义SO库建好后,Kylix应用程序调用时会报错,这是因为Kylix找不到新建库,必须对系统进行相关设置。这与在Delphi for Windows中使用DLL库不同,DLL库建好后只需将编译后的DLL文件放到Delphi主程序目录下即可使用。操作步骤如下:
  ◆ 将编译好的SO库文件放到Linux系统库目录/lib或/usr/lib下,或者在Linux系统库路径shell变量LD_LIBRARY_PATH中加入自定义SO库文件所在路径。
  ◆ 在根用户(root)下,用ldconfig命令刷新库缓冲区。
  ◆ 对Kylix执行文件使用ldd命令,查看该程序所关联的SO库。
  2.隐式链接
  隐式链接是指在应用程序开始执行时就将SO库文件加载到应用程序中。实现隐式链接并不难,只需在应用程序中加入库函数的声明语句及库的external定义从句,则库函数可以和一般局部函数一样使用。比如,要使用libMyFirstSO.so中的Add函数,则只要在应用程序中增加下面语句:
function Add (A:Integer;B:Integer):Integer;cdecl ;
external 'libMyFirstSO.so';
    3.显式链接
  显式链接是应用程序在执行过程中可根据实际需要随时加载SO库文件,也可以随时卸载SO库文件,还可在运行时进行SO库的切换。而这些是隐式链接无法做到的。与隐式链接相比,显式链接具有更大的灵活性。
  在Kylix中,要动态装入库和调用导出函数可以用Delphi仿真代码或自然Linux方法。下面分别介绍这两种方法。
  (1)用Delphi仿真代码动态装入
  在Windows中动态装入DLL是用Windows API函数―LoadLibrary或Delphi提供的SafeLoadLibrary函数完成的。找到库后,程序调用Windows API函数―GetProcAddress搜索DLL导出函数。若找到匹配,则返回所请求函数指针,并将这个函数指针转换成适当类型和调用。使用完后调用FreeLibrary,从内存中释放库。
  Kylix中使用Pascal RTL仿真函数实现SO库动态装入。下面的例子只列出Kylix应用程序中与动态链接相关部分,而非完整Kylix单元文件代码。
unit DynaFinterfaceusesSysUtils,Classes,Qcontrols,Qforms;typeTForm1 = class(TForm)Button1: TBprocedure Button1Click(Sender: TObject);var Form1:TForm1;implementation{$R *.XFM}type TComputeInteger = function (x:Integer;y:Integer):Integer;cdecl;//调用库函数接口类型定义procedure TForm1.Button1Click(Sender:TObject);var Handle :Thandle ;Compute :TcomputeInteger;beginHandle:=LoadLibrary('libMyFirstSO.so');//动态装入库if Handle&&0 then //找到库beginCompute:=TcomputeInteger(GetProcAddress(Handle,'Add');//搜索库函数Add,并返回函数指针if Assigned(Compute) thenShowMessage(IntToStr(Compute(10,20));//使用库函数FreeLibrary(Handle);//释放库endelseShowMessage('Library not found');end;
  (2)用Linux自然代码动态装入
  也可以使用Libc系统单元中的低级Linux函数,这样可使用更多参数、更好地控制系统。使用的Linux函数分别为dlopen(打开并装入库函数)、dlsym(搜索库函数)、dlclose(释放库)。因此,上例中调用库的代码变为:
procedure TForm1.Button1Click(Sender:TObject);var Handle :Pointer ;Compute :TcomputeInteger;beginHandle:=dlopen('libMyFirstSO.so');//动态装入库if Handle&&nil then //找到库beginCompute:=TcomputeInteger(dlsym(Handle,'Add');//搜索库函数Add,并返回函数指针if Assigned(Compute) thenShowMessage(IntToStr(Compute(10,20));//使用库函数dlclose(Handle);//释放库endelseShowMessage('Library not found');end;
  (3)SO库中窗体对象的使用
  除了包含函数和过程的库之外,还可以将Kylix建立的窗体放在共享对象中,这可以是对话框或其它窗体。
  生成新的库对象之后,只要在库源文件的声明部分增加对窗体单元文件的引用,然后在窗体单元文件中编写生成和使用窗体的导出函数。下面的例子实现Kylix主程序通过调用SO库窗体处理函数,来激活模态对话框以选择颜色,并更新应用主窗体颜色。步骤如下:
  ◆ 创建具有特定功能的窗体单元文件ScrollF,窗体对象为FormScroll。下面代码仅用于说明,并非完整的程序。
unit ScrollF;interfaceusesSysUtils, Classes, QControls, QFtypeTFormScroll = class(TForm) //对象及方法定义省略var FormScroll:TformScroll;
  ◆ 在窗体单元文件ScrollF的实现部分编写使用窗体FormScroll的导出函数GetColor。其功能是激活对话框对象FormScroll以选择颜色,并将颜色值返回。代码如下:
function GetColor (Col: LongInt):LongInt;cdecl;varFormScroll:TformScroll;beginResult := C //函数返回缺省值tryFormScroll := TFormScroll.Create (Application);tryFormScroll.SelectedColor := C //初始化颜色if FormScroll.ShowModal = mrOK then //显示对话框Result := FormScroll.SelectedC //返回颜色值finallyFormScroll.Fexcepton E: Exception doMessageDlg ('Error in FormDLL: ' +E.Message, mtError, [mbOK], 0);
  ◆ 在窗体文件ScrollF的定义部分增加导出函数GetColor的声明。代码如下:
function GetColor (Col:LongInt):LongInt;cdecl;
  ◆ 在库源文件FormSO.dpr的定义部分增加对窗体单元ScrollF的引用。代码如下:
library FormSO;usesScrollF in 'ScrollF.pas' {FormScroll};exportsGetColor;end.
  ◆ 编译库文件FormSO.dpr,生成SO库执行文件libFormSO.so。
  现在,就可以在Kylix应用程序中以隐式或动态方法来调用库libFormSO.so中的窗体类函数GetColor。
  四、应注意的问题
  尽管SO库为开发者带来诸多好处,但由于其与一般Kylix程序的差异,如果把它当作后者一样使用可能会带来一些问题。下面列出使用中可能出现的几个问题:
  (1)在SO库中大量引用CLX图形类库,将对SO库带来不良影响。
  (2)如果编译库和主执行文件而不运行库,则会得到CLX代码和数据的两个拷贝。例如,可能得到两个不同的全局Application对象,库中的Application对象不能正确初始化。
  (3)如果库中需要大量调用CLX图形类或CLX控件类对象,建议最好使用软件包(Package)―一种特殊的共享库;而若库以非图形类处理为主,如数值计算,则用SO库更为方便。
  掌握并能熟练地使用共享对象库技术,将有助于开发出功能更强、重用性更好、扩展更为灵活的应用程序。本文以实例方式,通过SO与DLL的比较介绍了共享对象库(SO)的功能及使用方法。希望通过本文,读者能使用自己创建的SO库来开发基于Linux的应用程序。
&&&主编推荐
H3C认证Java认证Oracle认证
基础英语软考英语项目管理英语职场英语
.NETPowerBuilderWeb开发游戏开发Perl
二级模拟试题一级模拟试题一级考试经验四级考试资料
港口与航道工程建设工程法规及相关知识建设工程经济考试大纲矿业工程市政公用工程通信与广电工程
操作系统汇编语言计算机系统结构人工智能数据库系统微机与接口
软件测试软件外包系统分析与建模敏捷开发
法律法规历年试题软考英语网络管理员系统架构设计师信息系统监理师
高级通信工程师考试大纲设备环境综合能力
路由技术网络存储无线网络网络设备
CPMP考试prince2认证项目范围管理项目配置管理项目管理案例项目经理项目干系人管理
Powerpoint教程WPS教程
电子政务客户关系管理首席信息官办公自动化大数据
职称考试题目
就业指导签约违约职业测评
招生信息考研政治
网络安全安全设置工具使用手机安全
3DMax教程Flash教程CorelDraw教程Director教程
Dreamwaver教程HTML教程网站策划网站运营Frontpage教程
生物识别传感器物联网传输层物联网前沿技术物联网案例分析
互联网电信IT业界IT生活
Java核心技术J2ME教程
Linux系统管理Linux编程Linux安全AIX教程
Windows系统管理Windows教程Windows网络管理Windows故障
组织运营财务资本
视频播放文件压缩杀毒软件输入法微博
数据库开发Sybase数据库Informix数据库
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&&&湘教QS2-164&&增值电信业务经营许可证湘B2-}

我要回帖

更多关于 linux 运行软件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信