我一直在使用C++實現一個簡單的ODE求解器來實現特定的功能。一切工作正常,編譯得很好。然後,我添加了一些調整,並保存它。突然之間,舊版和新版本都不再編譯了!我一直在使用emacs.I擔心我可能會意外刪除一些庫文件,但我不知道這是怎麼發生的! 這是我的錯誤:C++代碼突然不再編譯
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
這是正在完美的罰款代碼:
#include <iostream>
#include <cmath>
#include <fstream>
using namespace std;
/* Differential equation */
double fun(double y){
return (sqrt(y));
}
/*euler update formula */
double EulerUpdate(double y_n, double t_step){
return y_n + t_step * fun(y_n);
}
/* main function asking the user for input values, data stored in .dat file */
int main(void){
double T;
double y0;
double t_step;
double t = 0;
cout << " enter the maximum t value for which to compute the solution: ";
cin >> T ;
cout << "enter the initial value y0: ";
cin >> y0 ;
cout << "enter the time step: ";
cin >> t_step;
double y_n = y0;
ofstream outFile("ODE.dat");
for (int n = 0; n < T; n++){
outFile << t << " " << y_n << endl;
y_n = EulerUpdate(y_n, t_step);
t = t + t_step;
}
}
程序正在編譯好,它是失敗的鏈接器。你的調整是否涉及添加cmath? – mooiamaduck
沒有,這是未被刪除的版本。在另一個我開始使用數組。 – SandraK
你是如何調用編譯器的? – mooiamaduck