使用Visual C ++构建时,我注意到一个简单的可执行文件helloworld.exe
(显示WinAPI MessageBox
)可以使用Windows XP,Vista,7,8,10和任何计算机发送到在没有任何第三方dll或可再分发软件包的情况下运行。
既然我正在转向CodeBlocks + GCC,那么同样如此吗?即将显示一个简单的可执行文件,显示WinAPI MessageBox
能够在所有Win XP,Vista,7,8,10 上运行,而不需要任何其他需要的程序包,特定于GCC吗?
答案 0 :(得分:2)
与所有程序一样,包括那些使用VS构建的程序,保证程序将适用于所有这些Windows版本并非易事。但是,是的,您通常可以使用GCC编写控制台应用程序,它们可以在没有任何第三方DLL的情况下使用它们 - 我自己的CSVfix应用程序当然可以。你当然可以使用GCC来显示没有这些东西的消息框。我建议使用TDM GCC,其中一个版本附带一个Code :: Blocks包,作为执行此类操作的最直接方式。
答案 1 :(得分:0)
我之前用过的方法是确保所有内容都正确链接,通过在编译时传递-static标志来静态链接。
在g ++中,就像这样:g++ hello.cpp -o hello.exe -static
。
那应该照顾它。这样,您只需要没有libstdc++6.dll
的二进制文件。因此,如果您可以在代码:: blocks中传递链接器标志,请执行此操作。
答案 2 :(得分:-1)
我尝试了一下,使用Code :: blocks / GCC / MinGW 制作的.exe 需要一个外部文件:libstdc++-6.dll
。
可能有一种方法可以使用静态链接的可执行文件as stated here来删除此依赖项,但有些评论表明它并不像看起来那么容易。