我正在尝试构建一个简单的程序,我在其中定义了一个类并在Main中包含了它的标题。在链接时,Linker抱怨从类中访问任何成员函数:
: undefined reference to voxel::anyFunction
即使功能是公共的,也包含标题。
最初我在创建体素对象时发现了这个问题 - 我已经重载了默认构造函数,但是我发现voxel类中的任何函数都存在问题。
以下是一些代码摘录:
class voxel
{
public:
//here defined some member variables
//ommited the constructor
void fillMemberValuesWithDummy();//sets all members to some dummy value
};
#include "voxel.hpp"
void voxel::fillMemberValuesWithDummy()
{
//does the assignment to member variables
}
#include <iostream>
#include <fstream>
using namespace std;
#include "voxel.hpp"
{
voxel someVoxel;
somevoxel.fillMemberValuesWithDummy();
}
我认为这是非常愚蠢的我(不)在这里做,但你能告诉我什么吗?
答案 0 :(得分:1)
您需要链接所有目标文件以获取可执行文件。当您只有两个源文件时,可以直接编译它们:
g++ -o myprog.exe Main.cpp voxel.cpp
如果你想分割编译和链接并按这样做:
g++ -c -o Main.o Main.cpp
g++ -c -o voxel.o voxel.cpp
g++ -o myprog.exe Main.o voxel.o
随意创建一个生成此类命令的适当Makefile。
如果操作系统不需要,请删除.exe
。