C++ “架构x86_64的未定义符号”尝试包含来自其他文件的函数

C++ “架构x86_64的未定义符号”尝试包含来自其他文件的函数,c++,function,include,clang,undefined-symbol,C++,Function,Include,Clang,Undefined Symbol,我试图在另一个程序event_rate.cpp中包含一个名为kinematicfactor的函数,该函数是用kinetic_factor.cpp编写的 运动学_系数.cpp: #include "kinematic_factor.hpp" double kinematicfactor (double md) { double mt = 17.6924; // Mass of Fluorine [GeV/c^2] double r = 4*mt*md/pow(mt+md, 2);

我试图在另一个程序event_rate.cpp中包含一个名为kinematicfactor的函数,该函数是用kinetic_factor.cpp编写的

运动学_系数.cpp:

#include "kinematic_factor.hpp"

double kinematicfactor (double md) {
    double mt = 17.6924; // Mass of Fluorine [GeV/c^2]
    double r = 4*mt*md/pow(mt+md, 2);
    return r;
}
运动学_系数.hpp:

#ifndef kinematic_factor_hpp
#define kinematic_factor_hpp

double kinematicfactor (double md);

#endif /* kinematic_factor_hpp */
事件发生率:

#include "event_rate.hpp"
#include "kinematic_factor.hpp"

#include <iostream>
#include <cmath>

using namespace std;

int main() {
    cout << kinematic_factor(1.0) << endl;
}
我做错了什么

编辑:我试过了

#include "kinematic_factor.cpp"

它成功了。但我听说包含cpp文件而不是头文件对学习者来说是一种不好的做法。。。我能做什么?

你是如何编译这个程序的,我能正确编译同一个程序。我怀疑这应该是个问题

您需要一起编译源代码以编译和链接


g++kinetic_factor.cpp event_rate.cpp-o event_rate

我可以看到函数名kinetic_factor和kineticFactor在声明和函数调用中不相同,更正名称将解决问题。正确遵循编译和链接步骤非常感谢您对我的帮助!
#include "kinematic_factor.cpp"