【发布时间】:2012-01-27 19:42:36
【问题描述】:
我在编译一个引发异常的简单 C++ 程序时遇到了这个奇怪的问题。
main.cc:
#include <stdio.h>
double mean(double a, double b)
{
if((a + b) == 0)
{
throw "Exception:: Numerator is Zero";
}
return (a+b) / 2;`
}
calc.cc:
#include <stdio.h>
double mean(double a, double b)
{
if((a + b) == 0)
{
throw "Exception:: Numerator is Zero";
}
return (a+b) / 2;
}
当我编译如下:
执行以下命令: 步骤 2.1 => gcc -maix64 -fpic -c calc.cc 步骤 2.2 => gcc -maix64 -shared -o libcalc.so calc.o -lstdc++ 步骤 2.3 => gcc -maix64 main.cc libcalc.so -lstdc++然后运行程序,程序崩溃并出现以下错误:
在抛出 'char const*' 的实例后调用终止 IOT/Abort 陷阱(核心转储)但不是 Step 2.3 ,如果我们使用以下命令,事情会按预期工作:
gcc -maix64 main.cc libcalc.so -lstdc++ -lgcc_s
请您帮忙解决这个问题...
【问题讨论】:
-
你能检查你的帖子吗?你的 calc 和 main 是一样的。
-
您是指 AIX 7.1 吗? AIX 1.7(如果曾经存在的话)已经过时了几十年。
-
它是 1.7(抱歉打错了)``
-
当您尝试使用 C++ 编译器而不是 C 编译器时会发生什么?