我正在学习C++并且已经获得了创建Vector3D类的任务.当我尝试在OSX上使用G ++编译main.cpp时,我收到以下错误消息.为什么会这样?
g++ main.cpp
Undefined symbols for architecture x86_64:
"Vector3DStack::Vector3DStack(double, double, double)", referenced from:
_main in cc9dsPbh.o
ld: symbol(s) not found for architecture x86_64
Run Code Online (Sandbox Code Playgroud)
main.cpp中
#include <iostream>;
#include "Vector3DStack.h";
using namespace std;
int main() {
double x, y, z;
x = 1.0, y = 2.0, z = 3.0;
Vector3DStack v (x, y, z);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
Vector3DStack.h
class Vector3DStack {
public:
Vector3DStack (double, double, double);
double getX ();
double getY ();
double getZ ();
double getMagnitude();
protected:
double x, y, z;
};
Run Code Online (Sandbox Code Playgroud)
Vector3DStack.cpp
#include <math.h>;
#include "Vector3DStack.h";
Vector3DStack::Vector3DStack (double a, double b, double c) {
x = a;
y = b;
z = c;
}
double Vector3DStack::getX () {
return x;
}
double Vector3DStack::getY () {
return y;
}
double Vector3DStack::getZ () {
return z;
}
double Vector3DStack::getMangitude () {
return sqrt (pow (x, 2) * pow (y, 2) * pow (z, 2));
}
Run Code Online (Sandbox Code Playgroud)
Foz*_*ozi 23
你必须编译和链接你的Vector3DStack.cpp.尝试:
g++ main.cpp Vector3DStack.cpp -o vectortest
Run Code Online (Sandbox Code Playgroud)
这应该创建一个可执行文件vectortest.
将执行传递Vector3D给编译器:
g++ main.cpp Vector3DStack.cpp
Run Code Online (Sandbox Code Playgroud)
这将产生a.out在Linux和Unix系统上调用的可执行文件.要更改可执行文件名,请使用-o选项:
g++ -o my_program main.cpp Vector3DStack.cpp
Run Code Online (Sandbox Code Playgroud)
这是构建程序最简单的方法.你应该学习更多 - 阅读有关make程序,甚至是cmake.
| 归档时间: |
|
| 查看次数: |
16497 次 |
| 最近记录: |