VC程序移植到Linux

C++程序Windows移植Linux注意事项 总结了C++跨平台移植中由于GCC和MSVC编译器差异而导致的几种编译错误,并对解决问题提出一些建议。 阅读详情

前进中……

今天把在VC下写的jpeg文件发送程序移植到Linux下面,碰到了一个问题,找了n久原因,才发现原来是定义的一个结构体中的数据类型在VC和Linux中不匹配所致(具体说来是BOOL 和 bool),后来把他们都改成与街哦股无关的uint8_t才成功。

下面引用一篇文章,讲了VC程序移植到Linux下要注意的一些问题。

zz:http://www.xxlinux.com/linux/article/development/soft/20080528/14472.html

将VC程序移植到Linux系统的几点经验心得

有时我需要制作LINUX与WINDOWS下都可以运行的程序。在一般情况下,我会选择在WINDOWS平台下完成初始的开发。因为VC提供的图形化的编辑与调试界面的确较GCC要高产得多。在完成了测试之后,就开始把它向LINUX移植,移植的过程会有一些需要注意的地方。下面就是我的一些心得。

 

文件名

由于ext2文件系统对文件名是大小写敏感的,当你在这种文件系统上进行编译的时候,源文件中出现的#include 语句必须小心了。因为在VC环境下,由IDE自动生成的#include 语句,其中的文件名全部是小写的。所以,你需要在一开始就注意这个问题,严格的使用大小写敏感的文件名格式,避免在LINUX下编译时出现找不到头文件的错误。

 

数据类型

千万不要使用VC独有的数据类型,象__int16, __int32 和__int64 等等,你无法保证其它的编译器能否支持它们。特别是__int64,它确实简化了编程工作,但是当你的逻辑里充满了这样的数据类型的时候,改动就变得无比困难了。还有一个问题就是,我们经常在VC中使用WORD,DWORD,INT,UINT这样的扩展数据类型,不直接使用编译器的数据类型有助于提高在不同平台之间的可移植性。但是LINUX下没有定义这样的类型啊?其实只需要将windows.h和basetypes.h中对这些数据进行定义的语句复制到一个头文件中,再在linux下包括进来就行了。

 

关键字

关键字是比较好处理的东西,凡是VC中带两个下划线的关键字,比方__asm都是VC独有的。尽量不使用它们,如果实在无法避免,就用#ifdef 和#endif为LINUX和WINDOWS编写两个版本。

 

MAKEFILE的编写

你可以先用VC导出一个makefile,然后对其进行修改,但我倾向于从中拷贝出一段来生成GCC的makefile,比起手工编写要快许多。

 

程序设计结构

这绝对是移植过程中问题最大的一个部分。应用程序难免要用到操作系统的服务,如果完全使用标准的C/C++编写,这将不是一个问题,但是当我们使用到多进/线程,管道,或者对WINDOWS图形界面的程序进行移植的时候,这个问题就变得突出了。我们应当从设计上就为程序的移植打好基础。

 

解决这个问题首先必须搞清楚应用程序的逻辑模块。对于这个模块必须使用标准的C/C++进行编写。同时将应用程序使用的线程数最小化,线程越多越难移植。将输入输出模块独立出来。最后划分出控制模块,这个模块与用户进行交互。

基于YOLOv8改进的目标检测算法研究及毕设实现全流程指南 在PyTorch中定义改进后的YOLOv8模型。首先,导入相关的库和模块,然后定义骨干网络、颈部和头部的结构。# 这里定义骨干网络的结构,例如使用改进的CSP结构# 卷积层、批归一化层、激活函数等# 更多的卷积层、批归一化层、激活函数等# 其他层...# 其他层的输出...然后,定义颈部和头部的结构,类似地,将注意力机制和特征增强方法集成到模型中。本毕设以YOLOv8为基础,通过集成注意力机制、应用特征增强技术等方法,改进了目标检测算法。 阅读详情

相关推荐

IEC61850客户端连接实战:CMS vs MMS协议抓包对比与性能初探(基于YX-PIS协议栈)

本文深入探讨了IEC61850客户端连接中CMS与MMS协议的抓包对比与性能优化。通过Wireshark抓包分析、协议栈配置实战和性能基准测试,揭示了两种协议在连接建立、数据交互和性能调优方面的关键差异,为智能电网自动化系统的协议选择提供了实用指南。

weixin_29209805的博客 214

小白学习记录-代码的移植

从字面上理解,可移植性说的就是,在一个平台上开发的代码,通过比较少的改动就能够在另外一个平台上使用。不同的平台可以指具有不同的处理器架构,比如x86和arm;或不同的操作系统,比如windows和linux。程序语言最终会被编译器编译成处理器可以理解的指令,不同的平台编译器或有差别,因此要将代码从一个平台移植到另一个平台,有时会需要对代码做些修改。一般来说,高级的语言具有比较好的可移植性,因为没有

掌心化雪 2494

Oracle Linux中/var/log/pcp/pmlogger目录膨胀问题分析与解决

本文详细分析了Oracle Linux系统中/var/log/pcp/pmlogger目录异常膨胀的常见原因与解决方案。当PCP性能监控框架的pmlogger服务日志轮转或清理机制失效时,会导致该目录无限增长,威胁系统稳定。文章提供了从服务状态诊断、配置文件审查到安全清理与预防策略的全流程实战指南,帮助运维人员快速回收磁盘空间并恢复服务正常运行。

weixin_29208327的博客 370

windows程序移植到linux总结

首先要写makefile,很简单,有专门博客,大家去搜一下..下面把编译时遇到的问题总结下.大部分解决方法是从网上找的,这里对看过文章的作者表示感谢. 1,max,min函数,自己代码实现了这两个函数,会和linux自带的有冲突. 解决方法: 删除自己的函数 2, error: ‘STATUS’ is not a class or namespace 解决方法:...

沉醉不知处的博客 2890

手把手教你用Simulink搭建交流异步电机矢量控制模型(附完整仿真文件)

本文详细介绍了如何使用Simulink搭建交流异步电机矢量控制模型,涵盖系统架构设计、关键模块实现、PI调节器参数整定及仿真分析等核心内容。通过实战指南和完整仿真文件,帮助读者掌握矢量控制技术,提升电机控制系统的设计与调试能力。

n4o5p6q7r的博客 250

结构光三维重建(一)条纹结构光三维重建

在近景三维重建领域,结构光技术可以说是应用最广泛的,尤其在工业领域。该技术目前具有高精度和无视弱纹理等优点,但复杂的室外环境还是会对该技术造成一定程度的干扰。目前用的比较多的结构光分别两大类:线结构光以及条纹结构光。接下来我先来简单介绍一下条纹结构光三维重建,事实上,条纹结构光的原理与双目立体匹配是非常相似的。...

AAAA202012的博客 1万+

什么叫移植

所谓移植也许是不同平台、不同芯片下编写的程序

Dragon_F的专栏 1220

【SLAM】SVO2.0编译运行和论文代码解读

SVO2是我遇到的最难编译的代码了,可能公开版本不能放太鲁棒的代码吧,搞了快一个星期,终于跑起来了。

iwanderu的博客 5971

vc执行linux脚本,VC中调用其他应用程序的方法(函数) WinExec,ShellExecute ,CreateProcess...

三个SDK函数:WinExec,ShellExecute,CreateProcess可以实现调用其他程序的要求,其中以WinExec最为简单,ShellExecute比WinExec灵活一些,CreateProcess最为复杂。//打开C:\Test.txt 文件ShellExecute(NULL, "open","http://www.google.com",/ NULL, NULL, SW_S...

weixin_32277761的博客 460

《生成式AI引发的“认知污染”:社交媒体虚假信息的治理困局》

认知污染与生成式AI“认知污染”指信息环境被大量虚假、误导性内容所充斥,干扰公众对事实的认知判断。在社交媒体时代,虚假信息的生产和传播门槛大幅降低,呈现出工业化、规模化的趋势。近年兴起的生成式人工智能(Generative AI)技术,如大型语言模型(LLM)和深度伪造(deepfake),更是加剧了这一问题。AI可以自动生成看似真实的文本、图像、音视频,将虚假信息批量生产并快速散播到社交平台上。

那谁的博客 5912

《哥谭神话-工程篇》02.Palantir的Ontology层(语义层) -企业操作系统的大脑

Ontology(语义层) 是Foundry 的核心层。Ontology 位于集成到 Foundry 中的数字资产(数据集和模型)之上,并将其连接到现实世界的对应物,从工厂、设备和产品等物理资产到客户订单或金融交易等概念。本篇将详细拆解Ontology(语义层)。

879

将VC程序移植到Linux系统的几点经验心得

将VC程序移植到Linux系统的几点经验心得关键词:  VC     Linux     移植   <br />有时我需要制作LINUX与WINDOWS下都可以运行的程序。在一般情况下,我会选择在WINDOWS平台下完成初始的开发。因为VC提供的图形化的编辑与调试界面的确较GCC要高产得多。在完成了测试之后,就开始把它向LINUX移植,移植的过程会有一些需要注意的地方。下面就是我的一些心得。 <br /> <br />文件名 <br />由于ext2文件系统对文件名是大小写敏感的,当你在这种文件系统上进行编

特权份子的专栏 759

【人工智能 Open AI】程序员怎样提升研发效率?从技术、业务、项目管理等等多个方面来阐述。

程序员要想提升研发效率,需要从技术、业务、项目管理等多方面着手,多靠工具配合实践实现,从而提升研发效率。

AI天才研究院 5526

vc转linux环境,将VC程序移植到Linux系统的几点经验心得

将VC程序移植到Linux系统的几点经验心得(2009-03-02 21:30:48)标签:杂谈有时我需要制作LINUX与WINDOWS下都可以运行的程序。在一般情况下,我会选择在WINDOWS平台下完成初始的开发。因为VC提供的图形化的编辑与调试界面的确较GCC要高产得多。在完成了测试之后,就开始把它向LINUX移植,移植的过程会有一些需要注意的地方。下面就是我的一些心得。文件名由于ext2文件...

weixin_30143813的博客 292

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

vc转linux环境,将VC程序移植到LINUX系统

【IT168 技术文档】有时我需要制作LINUX与WINDOWS下都可以运行的程序。在一般情况下,我会选择在WINDOWS平台下完成初始的开发。因为VC提供的图形化的编辑与调试界面的确较GCC要高产得多。在完成了测试之后,就开始把它向LINUX移植,移植的过程会有一些需要注意的地方。下面就是我的一些心得。文件名由于ext2文件系统对文件名是大小写敏感的,当你在这种文件系统上进行编译的时候,源文件中...

weixin_30298279的博客 664

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

VC程序移植到Linux下注意事项

将VC程序移植到Linux系统的几点经验心得 有时我需要制作LINUX与WINDOWS下都可以运行的程序。在一般情况下,我会选择在WINDOWS平台下完成初始的开发。因为VC提供的图形化的编辑与调试界面的确较GCC要高产得多。在完成了测试之后,就开始把它向LINUX移植,移植的过程会有一些需要注意的地方。下面就是我的一些心得。  文件名  由于ext2文件系统对文件名是大

Ontheway的博客 2702

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

vc6.0移植工程到linux

  刚 刚将一个工程从vc6.0移植到linux 下的kdevelop,发现了一些问题:许多文本内容发生了变化。不可想象,按照这变化了的文本去进行调试会遇到多少不可想象的问题。        其实根本原因是dos格式到unix的转换问题。因此,在进行程序移植时一定要对程序文件进行转换,避免因内容改变而带来的一些不必要的烦恼。        #find . -type f -and -not

lenev的专栏 1315

vc linux编译,将VC程序移植到LINUX的几点心得

有时我需要制作LINUX与WINDOWS下都可以运行的程序。在一般情况下,我会选择在WINDOWS平台下完成初始的开发。因为VC提供的图形化的编辑与调试界面的确较GCC要高产得多。在完成了测试之后,就开始把它向LINUX移植,移植的过程会有一些需要注意的地方。下面就是我的一些心得。文件名由于ext2文件系统对文件名是大小写敏感的,当你在这种文件系统上进行编译的时候,源文件中出现的#include ...

weixin_33675283的博客 343

代码移植经验之谈

将VC程序移植到Linux系统的几点经验心得有时我需要制作LINUX与WINDOWS下都可以运行的程序。在一般情况下,我会选择在WINDOWS平台下完成初始的开发。因为VC提供的图形化的编辑与调试界面的确较GCC要高产得多。在完成了测试之后,就开始把它向LINUX移植,移植的过程会有一些需要注意的地方。下面就是我的一些心得。文件名由于ext2文件系统对文件名是大小写敏感的,当你在这种文

tengxiaoming的专栏 6111

socket从Linux向win移植

将前面的Linux下面的套接字程序移植到windows下面。遇到了一些问题,解决方法如下: 1,开线程的时候,在Linux下的是 2,使用套接字的时候,建立的方式不同 3,gcc与Vc编译器对于外部变量以及外部函数的处理方式的不同。

everysmile的专栏 921

linux visual c 程序,如何在Linux上编译Windows Visual C代码

注意:这个问题的目的是找出是否存在一种在VC中为Windows开发的标准方法,并将该代码平滑地移植到Linux系统上(意思是尽可能少地编写代码),以便它可以编译成可执行文件并运行.根据我收到的答案,我可以看到存在误解.因此,我打算将这个问题分成两个单独的问题.一个是我原来的(修订后的问题),另一个是我的具体问题以及如何解决它. (我会在发布后添加这个问题的链接).注意:我对C很新,并使用makef...

weixin_39917437的博客 188

snprinf在VC和GCC上的不同

移植ffmpeg过程中发现snprintf函数在linux下与windows下有差异,所以转载下面这篇文章。     转自:http://hi.baidu.com/osidy/item/3f44f898d383108859146127 snprintf函数并不是标准c/c++中规定的函数,但是在许多编译器中,厂商提供了其实现的版本。 在gcc中,该函数名称就snprintf,而在

1366

过了好长时间才有的第二次~!(忙吗?)

“原来为了在Linux下写网络程序,就自己封装了一个class,现在一直在用,VC下、BCB下、GNU C下都可以用,如果只用MFC,移植性不好。”看到这句话,这不就是自己一直要计划的吗?这么久都没来写点东西,也不知干什么了?上课吗?也没学到什么东西啊~!做其它事也没做出什么来还有就是又玩了几十个小时的游戏唉。。。 真是。。。好好干吧~!!

cpp.CN 758

pthread-win32在VC2005下的使用

pthread-win32是一个在Win32环境下的Unix POSIX线程库的移植. 有了它, 可以比较方便的移植Unix/Linux多线程程序到Windows下. 在VC2005下使用也很简单: 下载, 地址是 http://sourceware.org/pthreads-win32 里面include目录中是头文件, lib目录中是.lib和.dll文件. 在VC项目的属性

学习是为了探索这个世界的本质 854
上一篇: IStream的Write和Seek函数
下一篇: 小小的收获
floatdu
博客等级 码龄19年 8粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值