未定义的引用;在链接时无法访问类公共函数

时间:2013-12-21 17:34:29

标签: c++ function class

我正在尝试构建一个简单的程序,我在其中定义了一个类并在Main中包含了它的标题。在链接时,Linker抱怨从类中访问任何成员函数:

: undefined reference to voxel::anyFunction

即使功能是公共的,也包含标题。

最初我在创建体素对象时发现了这个问题 - 我已经重载了默认构造函数,但是我发现voxel类中的任何函数都存在问题。

以下是一些代码摘录:

voxel.hpp

class voxel
{
  public:
    //here defined some member variables
  //ommited the constructor
  void fillMemberValuesWithDummy();//sets all members to some dummy value
};

voxel.cpp

#include "voxel.hpp"
void voxel::fillMemberValuesWithDummy()
{
  //does the assignment to member variables
}

Main.cpp的

#include <iostream>
#include <fstream>
using namespace std;
#include "voxel.hpp"
{
  voxel someVoxel;
  somevoxel.fillMemberValuesWithDummy();
}

我认为这是非常愚蠢的我(不)在这里做,但你能告诉我什么吗?

1 个答案:

答案 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