При попытки компиляции файла через g++ выдаёт ошибку:
dminn@adminn:~/myprog$ g++ -I/home/adminn/mylib -L/home/adminn/mylib test.cpp -lmyfunc -o test
/usr/bin/ld: /tmp/cctCKXoC.o: в функции «main»:
test.cpp:(.text+0x766): неопределённая ссылка на «calculateAverage(std::vector<double, std::allocator<double> >&)»
/usr/bin/ld: test.cpp:(.text+0x7ed): неопределённая ссылка на «calculateStandardDeviation(std::vector<double, std::allocator<double> >&)»
/usr/bin/ld: test.cpp:(.text+0x874): неопределённая ссылка на «calculateVariance(std::vector<double, std::allocator<double> >&)»
collect2: error: ld returned 1 exit status
Использую
g++ -fPIC -c myfunc.cpp -o myfunc.o
g++ -shared myfunc.o -o libmyfunc.so
g++ -I/home/adminn/mylib -L/home/adminn/mylib test.cpp -lmyfunc -o test
Файлы библиотеки выглядят так:
mylib.cpp
#include "myfunc.h"
#include <algorithm>
#include <math.h>
double calculateAverage(const std::vector<double>& numbers) {
double sum = 0.0;
for (double number : numbers) {
sum += number;
}
return sum / numbers.size();
}
double calculateVariance(const std::vector<double>& numbers) {
double mean = calculateAverage(numbers);
double variance = 0;
for (int num : numbers) {
variance += pow(num - mean, 2);
}
return variance / numbers.size();
}
double calculateStandardDeviation(const std::vector<double>& numbers) {
double mean = calculateAverage(numbers);
double variance = 0;
for (int num : numbers) {
variance += pow(num - mean, 2);
}
variance /= numbers.size();
return sqrt(variance);
}
mylib.h
#pragma once
#include <vector>
#define myfunc_H
double calculateAverage(std::vector<double>& numbers);
double calculateVariance(std::vector<double>& numbers);
double calculateStandardDeviation(std::vector<double>& numbers);