如何创建跨平台的C++;Netbeans中的应用程序? 在Linux和Windows操作系统中,在NETBea87.1中创建一个简单的“hello World”跨平台C++应用程序时,我遇到了一些困难。我发现很少有针对Windows的说明,也没有针对Linux的说明(我的操作系统是Ubuntu 14.04)

如何创建跨平台的C++;Netbeans中的应用程序? 在Linux和Windows操作系统中,在NETBea87.1中创建一个简单的“hello World”跨平台C++应用程序时,我遇到了一些困难。我发现很少有针对Windows的说明,也没有针对Linux的说明(我的操作系统是Ubuntu 14.04),c++,linux,netbeans,makefile,cross-platform,C++,Linux,Netbeans,Makefile,Cross Platform,我在互联网上的研究得出结论,应该为Windows操作系统再创建一个makefile。通常,在创建C++项目时,NETBeBes善意地建议我们为我们创建一个MaMe文件。这很好,但它只适用于Linux 我坚持创建Makefile(以前从未手动创建过),因此以下是创建Windows Makefile的步骤: 右键单击Project->New->Makefile 文件名:“Makefile窗口”->Next 编译器:GNU编译器,平台:Windows->Next 基本目录:项目目录->下一步 目标名称

我在互联网上的研究得出结论,应该为Windows操作系统再创建一个makefile。通常,在创建C++项目时,NETBeBes善意地建议我们为我们创建一个MaMe文件。这很好,但它只适用于Linux

我坚持创建Makefile(以前从未手动创建过),因此以下是创建Windows Makefile的步骤:

  • 右键单击Project->New->Makefile
  • 文件名:“Makefile窗口”->Next
  • 编译器:GNU编译器,平台:Windows->Next
  • 基本目录:项目目录->下一步
  • 目标名称:hello world(“可执行文件”单选按钮)->添加->下一步
  • 所有创建文件的目录:GNU-amd64-Windows->Next
  • 输入源文件:main.cpp->Next
  • 要搜索包含文件的目录:留空->下一步
  • 选择要链接的库:无,链接模式:动态链接->下一步
  • 要链接的库:左空->下一步
  • 您希望如何构建代码?:开发模式->下一步
  • ,13。编译器选项:左默认->完成
  • 因此,在我的GNU-amd64-Windows文件夹中创建这个新烘焙的makefile之后,会出现一个对象文件(main.o)和一个可执行文件(hello world),但仍然只能在Linux中执行。当我尝试在Windows命令行中运行它时,出现以下错误:

    “错误的命令或文件名”

    以防万一,这里是我的主要.cpp内容:

    #include <iostream>
    int main( int argc, char** argv )
    {
        std::cout << "Hello world" << std::endl;
        return 0;
    }
    
    #包括
    int main(int argc,字符**argv)
    {
    
    STD::正如Borgleader提到的,Cuth

    ,只有C++代码可以跨平台。下面是我的解决方案:

  • 首先,我们不应该使用Linux GCC编译器来编译Windows应用程序。这就是为什么我们需要安装Windows编译器for Linux:

    sudo apt-get install mingw32 mingw32-binutils mingw32-runtime
    
  • 其次,在创建makefile时,我们应该指定替代编译器。使用:

    /usr/bin/i586-mingw32msvc-g++
    
    不违约:

    g++
    
  • 最后,在生成这个makefile之后,我们的输出文件就可以在Windows平台上执行了


  • 撇开工具链/工具箱的差异,您不能构建在Linux和Windows上都运行的本地可执行文件;您必须为每个要目标的平台编译一次。C++代码可以跨平台,可执行文件不能。我完全不同意这个。如果您想支持Windows上的Linux应用程序,则重新编译。在Windows上使用Cygwin终端的源代码。然后它将成为Windows二进制文件。这在大多数情况下都有效。或者使用宏确定正在使用的编译器,并编译适当的平台相关代码。这样,它将能够在两个系统上编译。