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