简单c ++程序上的过程入口点错误

问题描述 投票:0回答:1

[最近,我决定按照老师的建议尝试使用C ++。我下载了MinGW,并开始使用g ++编译一些简单的代码,但是过了一段时间,无论我尝试了多少,我编译的任何程序都将无法运行。我总是会收到与此类似的错误:

Error message in portuguese

((我的计算机是葡萄牙语,对不起。上面的消息翻译为“过程[过程名称]不能位于动态链接库[编译的可执行文件的名称]中。”。我制作的标头生成器工具,它是一个.cpp文件。我编译的其他程序在执行时总是显示“过程入口点”错误)

我正在使用命令g++ -o <filename>.exe -g -Wall *.cpp进行编译(调试和填充),并且我仅安装了mingw32-base-binmingw32-gcc-g++-bin软件包。我发现要让编译后的代码真正运行的唯一方法是,如果我使用命令g++ <file> -static-libstdc++ -static-libgcc编译代码(即使使用简单的程序也会导致可执行文件的大小膨胀),或者使用诸如Visual Studio 2019的工具。也尝试重新安装MinGW,但也无法正常工作。

由于我没有做比某些课堂练习还要大的事情,所以我真的很希望能够编译我的代码而不必使用像Visual Studio这样的繁重工具,而且我也想知道为什么这样做必须添加-static-libstdc++-static-libgcc才能正常工作。

PS .:要注意的另一件事是,在我全新的笔记本电脑(具有相同的MinGW配置)上进行编译可以正常工作。我与我的老师讨论过,他认为Microsoft C ++可再发行文件(从工具和游戏等安装)可能与MinGW提供的标准C ++库冲突。不过,他不是很确定。

PS-2 .:似乎极其简单的代码有效(诸如Hello World之类的东西)。任何更复杂的分解。这是我在出现错误的地方所做的最简单的代码:https://hastebin.com/aqamidoxom.cpp

c++ g++ runtime-error mingw entry-point
1个回答
1
投票

某些标准库功能是“仅标头”,因此将它们烘焙到可执行文件中。

其他更复杂,位于MinGW“运行时” DLL中,您必须将其与可执行文件一起提供。通常,只需将其与可执行文件放在同一目录中,或将其放置在PC的%PATH上的某个位置就足够了。

静态链接标准库时,您可以回避它,因为现在从库中将everything烘焙到可执行文件中。

这与Visual Studio或其DLL完全无关。 (除了MinGW DLL,您还使用mcvcrt.dll,但是that is not to do with Visual Studio,并且它在Windows上始终可用。)

进一步阅读:

© www.soinside.com 2019 - 2024. All rights reserved.