Я только что закончил класс на C / C ++ в среде Linux, и когда я скопировал и запустил несколько простых кодов на своем Mac (OS-X 10.7 Lion), я столкнулся с некоторыми ошибками. Я использую gcc / g ++ на обеих платформах. Кажется, что прототипирование не передается должным образом: когда я прототипирую файл mysin.cpp, он выдает ошибки ниже, но когда я копирую определение функции на его место (т.е. помещаю весь код в один файл), он работает нормально ,
выход:
J-MacBook-Pro jh$ g++ -o main main.cpp -lm
Undefined symbols for architecture x86_64:
"mysin(double, double)", referenced from:
_main in cc67Vpm6.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
mysin.cpp
#include <math.h>
double mysin(double x, double tol) {
int N;
int ii = 1;
double q;
double sN = x;
double cont = x;
double term = x;
while (fabs(term) > tol) {
term = term * (-x * x) / ((2 * ii + 1) * (2 * ii));
sN = sN + term;
ii = ii + 1;
}
return sN;
}
main.cpp
#include <iostream>
#include <math.h>
double mysin(double x, double tol);
using namespace std;
int main(){
cout << "sin(1) = " << mysin(1, 1e-6) << endl;
}
Кажется, что проблемы с каким-то типом искажения имени, но я не могу точно сказать, что происходит. Есть идеи? Что-то невероятно очевидное, что мне не хватает?