Я получаю ошибки компоновщика undefined reference to function
, когда пытаюсь скомпилировать следующий проект:
header.hpp
inline void f(double*, double*, double*);
impl. cpp
inline void f(double* A, double* B, double* C){ ... }
use. cpp
#include "header.hpp"
int main(){
double *A, *B, *C;
f(A, B, C);
return 0;
}
Я компилирую с g++ -std=c++11 header.hpp impl.cpp use.cpp
. Затем компоновщик говорит undefined reference to f
в файле use.cpp
.
Я заметил, что если я удалю ключевое слово inline
, все будет работать нормально, но я бы хотел сохранить его.
Кроме того, Я заметил, что если в use.cpp
вместо этого включить impl.cpp
, все также работает нормально, но, опять же, это не то, что я хочу делать, так как я хочу создать несколько двоичных файлов с использованием файлов impl.cpp
, impl2.cpp
и т. Д. и, следовательно, жесткое кодирование одного из них также не подходит.
Есть ли способ, как сделать такой проект компиляцией и связью?