如果Visual C++编译器编译的代码是直接的C++,为什么需要可再发行的包呢?这会使您的代码平台依赖吗?将可视化C++编译器与可再发行组件包一起使用是否比使用其他IDE和g ++有任何优势?
代码不依赖于平台,生成的可执行文件是.它使用标准库实现链接到MS库,它们作为DLL包含在可再发行组件中.
IIRC应该有一个静态链接所有内容的选项,这样你就不需要额外的可再发行组件了,但是生成的二进制文件仍然依赖于平台 - 例如你不能在UNIX系统上运行windows二进制文件(没有WINE)至少).
没有"Straight C++"这样的东西.在你的代码中总会有一些你在这里和那里调用的库函数,即使你非常小心,也会有一些函数只需要由编译器发出的代码调用.例如,如果您有以下循环:
for( int i = 0; i < count; i++ )
array1[i] = array2[i];
Run Code Online (Sandbox Code Playgroud)
编译器将用简单复制内存的代码替换它.如果你正在编译更小的大小而不是速度,这将是一个非常像memmove()的函数调用.
此外,您可能有一些浮点运算,没有直接的x86等效指令; 这些也将通过函数调用实现.而这样的例子不胜枚举.
这不会使您的代码平台依赖,因为在不同的平台上,该plafrom的编译器将编译您的相同代码以与该平台的C++运行时一起使用.
幸运的是,C++运行时不必是与应用程序分离的实体.检查编译器和链接器选项; 您应该能够生成包含两者的单个可执行文件.如果您发现g ++不需要单独的运行时,那是因为它默认情况下完全相同.
| 归档时间: |
|
| 查看次数: |
6060 次 |
| 最近记录: |