Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux到Windows C++;港口 我试图将我的C++应用程序从Linux移植到Windows(Visual C++)。 我只是好奇你是否知道任何脚本/工具会扫描源代码并检查可能的问题(比如dirent.h等)_C++_Windows_Linux_Porting - Fatal编程技术网

Linux到Windows C++;港口 我试图将我的C++应用程序从Linux移植到Windows(Visual C++)。 我只是好奇你是否知道任何脚本/工具会扫描源代码并检查可能的问题(比如dirent.h等)

Linux到Windows C++;港口 我试图将我的C++应用程序从Linux移植到Windows(Visual C++)。 我只是好奇你是否知道任何脚本/工具会扫描源代码并检查可能的问题(比如dirent.h等),c++,windows,linux,porting,C++,Windows,Linux,Porting,谢谢。或 编辑: Cygwin本质上是Unix/Posix和windows之间的一个兼容层(作为dll实现)——代码应该保持不变,但Cygwin dll的不同版本之间可能会出现问题 Msys+Mingw是在win32中重新实现的Unix/Posix libs的一个子集,是gcc编译器的一个端口以及重要的构建工具。生成的exe完全以本机方式运行,但一些复杂的构建过程需要更多的工作 无论哪种方式,如果应用程序使用X,那么您也需要一个X-server,这两个都提供了一个。但是,如果你正在做大量的图形,

谢谢。

编辑:
Cygwin本质上是Unix/Posix和windows之间的一个兼容层(作为dll实现)——代码应该保持不变,但Cygwin dll的不同版本之间可能会出现问题

Msys+Mingw是在win32中重新实现的Unix/Posix libs的一个子集,是gcc编译器的一个端口以及重要的构建工具。生成的exe完全以本机方式运行,但一些复杂的构建过程需要更多的工作


无论哪种方式,如果应用程序使用X,那么您也需要一个X-server,这两个都提供了一个。但是,如果你正在做大量的图形,并且应用程序是使用Qt或wxWidgets之类的东西编写的,那么要让它工作起来,你会有相当大的痛苦。

微软在MSDN上有一条关于管理从*nix到Win32的端口的“最佳”方法的条目


首先,我将使用MinGW进行编译(至少首先),以消除任何可能的gcc-to-msv问题(不要浪费时间处理与编译器相关的问题)


其次,只需编译代码并查看所有未找到的include文件。转到包含这些标题的代码,找出它是否是Windows中存在的依赖项(只是没有在包含路径中安装或设置)。如果不是,请使用跨平台库替换非便携库。典型的跨平台库包括:Boost、OpenGL、SDL、Qt等(取决于您的应用程序所做的工作)。如果它只是一个命令行“数字处理”软件,您可能会在Boost中找到所需的一切。

第一个工具称为编译器。它会告诉你你的程序是否编译

第二个工具称为运行所有测试。他们会告诉你结果的二进制代码是否有效


你在找什么,一个水晶球,让你不用工作?无论你采取什么方法或阅读什么帮助你开始,你都必须在某个时候(1)编译这个东西并(2)检查它是否有效。

我不知道有任何类似的工具。这类工作通常是手工完成的。@karlphillip:编译器通常能很好地列出丢失的头文件
make
甚至可能列出丢失的头文件(如果您设置了正确的依赖规则,例如通过运行
makedepend
gcc-MD
)。@Ben谢谢。但我猜他指的是一个Windows工具。@karlphillip:人们也为Windows制作编译器:)@Ben lol然后回答问题,让@Petr非常高兴。嗨,谢谢。性能如何是MySysCyWin与Windows下的Visual C++相比?@ PETR:唯一重要的性能影响将是使用<代码> For < /C> >的代码,这在没有INTIX的Windows上是很难实现的。使用cygwin的更大问题是,您的任何用户都必须安装cygwin才能运行该程序。msys是否包含某种POSIX仿真层?它是否模拟了fork()?@ssmir,是的,它是在win32中实现的Posix。AFAIK it NOT do fork()-fork()概念在Windows上不起作用,因为在Windows上生成进程的成本很高,而Sys不是为其构建应用程序的!您的解释是有缺陷的:MinGW为本机GCC提供了自己的“Windows SDK”头和导入库。MSYS只是一个开发环境(即运行
configure&&make
的bashshell)。MSYS也不提供X实现。如果您需要Windows上的POSIX,请使用Cygwin,如果您的项目使用autotools,请使用MSYS+MinGW构建本机Windows应用程序,或者更好的是,采用比autotools更跨平台的工具,例如CMake或Bjam等。请更正您对MSYS的描述,因为它根本不正确。该页面包含有用的资源,但我真的不明白这两个链接到Boost的随机页面,甚至连一句评论都没有
:S
@Matteo:我想基本上是微软在说‘使用Boost’:)我也是,但是链接到回归统计数据(??)而不写一行评论不是最好的说法<代码>:)(顺便说一句,你得到了我的+1)