免责声明:我不是专家或专业人士,而只是在教自己。因此,我解决这个问题的尝试最多可能是最基本的。
在C ++中,每当我尝试使用<cmath>
库编译程序时,编译将完成,但是当程序尝试执行时,我会收到运行时错误。弹出一个Windows对话框,说该程序已停止工作并正在搜索解决方案。我想我会先尝试学习一下,然后先给出我最好的镜头。所以我加载了GDB并尝试运行该程序,以便更多地了解正在发生的事情。
当运行包含<cmath>
库的程序时,GDB会立即输出以下内容(无论我将断点放在何处):
warning: Could not load shared library symbols for C:\Program Files\DGAgent\plugins\09D849B6-32D3-4A40-85EE-6B84BA29E35B\AE_MailSensor_Plugin.dll.
Do you need "set solib-search-path" or "set sysroot"?
warning: Could not load shared library symbols for C:\Program Files\DGAgent\plugins\09D849B6-32D3-4A40-85EE-6B84BA29E35B\ame_outlooksensor.dll.
Do you need "set solib-search-path" or "set sysroot"?
warning: Could not load shared library symbols for C:\Program Files\DGAgent\plugins\09D849B6-32D3-4A40-85EE-6B84BA29E35B\ame_smtpsensor.dll.
Do you need "set solib-search-path" or "set sysroot"?
warning: Could not load shared library symbols for C:\Program Files\DGAgent\plugins\09D849B6-32D3-4A40-85EE-6B84BA29E35B\OS_Plugin.dll.
Do you need "set solib-search-path" or "set sysroot"?
warning: Could not load shared library symbols for C:\Program Files\DGAgent\plugins\09D849B6-32D3-4A40-85EE-6B84BA29E35B\COM_sensor.dll.
Do you need "set solib-search-path" or "set sysroot"?
如果我将断点放在main
上,它就会停在这里。如果我允许它在没有断点的情况下运行或指示GDB移动到下一步我收到:
Program received signal SIGSEGV, Segmentation fault.
0x6fc85cd1 in libstdc++-6!_ZNSo9_M_insertIdEERSot_ ()
from C:\Users\Me\Desktop\libstdc++-6.dll
从我可以收集的内容来看,由于某些原因,我的系统在加载<cmath>
库时出现问题,但我仍然不确定原因。前三个警告看起来像是与电子邮件进程相关的文件,但这对我来说没什么意义(但我再也不太了解)。这就是我被困的地方。
仅供参考:我正在运行Windows 7企业版,我的编译器使用MinGW和G ++。
编辑:我尝试使用-g启用调试符号来编译程序。执行此操作时,回溯仅减少到#0,#1和#2(请参阅下面的注释以了解原始回溯),其中#2附加在`C:\ Users \ me \ desktop \ file.cpp:19。指示行这是该方法之前的最后一步。在更简单的程序中重复这种情况,指示的行是调用方法之前的最后一步。
是否可能存在类似于forum thread的版本问题指向此{{3}}?我使用gcc版本4.8.1
编辑:根据@ pm100的要求。 代码:
#include <cmath>
#include <iostream>
using namespace std;
int main() {
cout << floor(2.3);
}
用于编译:(我使用记事本++)
NPP_SAVE
CD $(CURRENT_DIRECTORY)
C:\mingw\bin\g++ "$(FULL_CURRENT_PATH)" -o "$(NAME_PART).exe" -g
cmd /c $(NAME_PART).exe