C跨平台问题

henreash
博客专家认证
2008-12-17 03:14:24
最近打算做一个新的项目,老板说考虑一下以后跨平台问题。我搜索了一下网络,符合要求的有Free Pascal和C/C++。我的思路是用Free Pascal或C/c++在Windows下实现主要业务逻辑,封装成为DLL,在用Delphi或者VC来调用。以后要在Linux下使用了,就把这些DLL代码拿到Linux下稍微调整后编译,并供界面程序调用。现在有几个问题请教:
1 我的思路是否可行?
2 如果我要访问数据库(Oracle或MSSQL),用这些底层语言是否可行。我知道有Por*C可以访问Orcale,但是跨平台后数据库访问是否还可使用?
3 使用何种开发工具?Linux下应该是记事本+GCC,但是现在我在Win下开发,希望能有一个方便快捷的IDE环境,但有不要影响一个的移植。
4 跨平台的部分应该不能包括界面部分,是不是这样?
...全文
482 32 打赏 收藏 转发到动态 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangyaosuper 2008-12-19
  • 打赏
  • 举报
回复
[Quote=引用 29 楼 henreash 的回复:]
非常感谢大家 尤其是第一百零一根草。老兄不知有没有Blog?
[/Quote]

木有阿,哈哈
caremsi 2008-12-18
  • 打赏
  • 举报
回复
QT和DevC++那个好?
QT好上手,QT4支持sql。
gql1123 2008-12-18
  • 打赏
  • 举报
回复
友情UP
xjtlf 2008-12-18
  • 打赏
  • 举报
回复
友情up
ooily 2008-12-18
  • 打赏
  • 举报
回复
友情up
attributemismatch 2008-12-18
  • 打赏
  • 举报
回复
不懂,up
ooily 2008-12-18
  • 打赏
  • 举报
回复
不懂,up
xiaonong 2008-12-18
  • 打赏
  • 举报
回复
不懂,了解了解
qqlpp 2008-12-18
  • 打赏
  • 举报
回复
不懂,帮顶
henreash 2008-12-18
  • 打赏
  • 举报
回复
非常感谢大家 尤其是第一百零一根草。老兄不知有没有Blog?
xiaopoy 2008-12-18
  • 打赏
  • 举报
回复
LS说的对.
尽量用他人封装的跨平台库,c标准库当然是封装中比较好的.

当然实际设计中极不可能只使用跨平台的封装库,最好在工程阶封装程序
把程序在顶层根据使用API 分为跨平台和不可扩平台的2个工程,这样以后修改也很简单。索引良好的文档资料也是非常重要的

还有一种常用的思路,在API阶封装.把不可跨平台的API定义为define,跨越平台时修改define就可以.

c支持多平台是因为c封装了asm阶,主要支持部件是编译器.其他的语言只要编译器支持,可跨平台性也是自然而然,但API接口一样需要使用封装的库/自己封装
csgdseed 2008-12-17
  • 打赏
  • 举报
回复
多用与OS无关的标准c
wangyaosuper 2008-12-17
  • 打赏
  • 举报
回复
还有就是跨平台的软件架构,多考虑使用impl的模式来设计,会比较便于维护
wangyaosuper 2008-12-17
  • 打赏
  • 举报
回复
对了,还有多线程以及信号量的封装也很重要,也要单独成模块,

这些网上有一些封装的例子都很好,LZ自己找一找,

祝好运
wangyaosuper 2008-12-17
  • 打赏
  • 举报
回复
对于进程间通信 和 数据库模块, 在编写时尽量分层,

只有底层和系统有关系,上层的逻辑抽象出来,尽量和系统无关,

底层那部分用编译宏分开,不同的系统对应不同的编译宏,

建议编译环境统一,都使用g++比较好。

界面最好用java/python等实现,用c++实现的话,推荐GTKmm
ooily 2008-12-17
  • 打赏
  • 举报
回复
ding
wangyaosuper 2008-12-17
  • 打赏
  • 举报
回复
如果不太牵涉到界面、进程间通信和数据库的话,C跨平台基本是没有问题的。

如果遇到这些问题,同一上面的说法,界面应该用java来做比较好,

进程间通信,需要单独封装出一个模块,来时配win/unix/linux下的socket\共享数据区\FIFO的实现, 当然,如果进程间通信占据了你的软件的大部分的话,建议使用corba,这些分布式的架构,否则会很痛苦。

对于数据库来说,如果同时要支持多个数据库,或者数据库多个版本,不同系统上的同一个数据库,也是一个非常苦恼的问题,一定要把这一块代码独立成一个模块,单独来维护。

lann64 2008-12-17
  • 打赏
  • 举报
回复
项目开发不太可能不用到标准c++之外的扩展,就算标准c++,从实现上看也不尽相同。
所以仔细选择使用的库还有STL实现的版本。弄不好,就一个头文件包含就可以让人昏头。
lann64 2008-12-17
  • 打赏
  • 举报
回复
linux下vim和emacs都是不错的编辑器,不喜欢eclipse这种java的东西,多一层解释,慢。
lann64 2008-12-17
  • 打赏
  • 举报
回复
既然考虑跨平台,那开始就应该有至少两个环境来相互验证。
想先用vc来做,开发调试是方便了,等发现有一些移植问题时,没准得把方案推倒重来。
尤其是没有跨平台开发经验的情况下。
还是建议,每一步进展都至少在两个平台上验证。
加载更多回复(12)

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧