[英]Can a Visual C++ program be compiled and run on Mac OS X or Linux?
......如果是的话,怎么样?
具体来说,我想在Mac OS X Snow Leopard 10.6.8上编译并运行wavdiff 。 据我所知(这不是很远,因为我是C ++的新手),这是用MS Visual C ++或类似的东西创建的。
我非常感谢能够解决在Mac OS X或Linux上编译Visual C ++程序的一般情况的答案,并且还解决了上面的具体挑战。
C ++语言是可移植的。 理论上,C ++源代码可以编译为在任何平台上运行。
但是,有一些需要注意的注意事项:
long
通常为64位宽,而64位Windows上只有32位宽。 Windows上的wchar_t
为16位宽,但Linux上通常为32位。 因此,如果您的代码对实现定义的行为做出假设,那么它可能不是可移植的(一个典型的例子是假设指针可以存储到int
或unsigned int
。这在32位机器上很有用,但是在64位,您最终尝试将64位数据存储到32位宽的对象中。 所以这取决于代码,真的。 干净,高质量的代码往往便携,没有什么问题。 当然,对于直接依赖于OS服务的部分,必须为不同的OS重写(或者可以使用跨平台的包装器/库,可以用于以可移植的方式执行相同的操作)
此程序无法轻松移植(在没有源更改的情况下重新编译)。 至少没有改变源。 它包含对Windows库的依赖性,并且在某些部分与Windows API相关联。
问题不在于它是用VC ++编写的,而是它具有这些依赖性。 通过在目标平台上重新编译或使用交换机定位不同的平台,可以在很多情况下轻松移植编码为没有平台依赖性的程序。
仅基于此源文件,看起来代码本身可能是合理的可移植C ++。 问题是它(或它使用的任何类)是否使用了那些在其他平台上不存在的Windows API。 您可以做的赌注是询问作者他们的想法,或者只是尝试一下。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.