我在MAC OS X上的Eclipse中有一个持久的未定义符号错误。我无法想象 找出错误的来源。
当我尝试使用GA_Operations和gaAlgorithm-> run_algorithm .....时,根据编译器发生错误:
int Application::execute_Algorithm()
{
if (this->GA_On)
{
GA_Operations *gaAlgorithm = new GA_Operations();
gaAlgorithm->run_algorithm(blocksSequence, bins);
}
else
{
packingAlgorithm->run_algorithm(blocksSequence, bins); return 0;
} //
return 0;
}
显示的错误是:
Undefined symbols for architecture x86_64:
"binproject::GA_Operations::run_algorithm(binproject::Blocks_Sequence&, binproject::BinContainer&)", referenced from:
binproject::Application::execute_Algorithm() in Application.o
"binproject::GA_Operations::GA_Operations()", referenced from:
binproject::Application::execute_Algorithm() in Application.o
声明是:
class GA_Operations {
public:
GA_Operations();
~GA_Operations();
//call from main application to execute algorithm
void run_algorithm(Blocks_Sequence &b_seq, BinContainer &container);
...
};
当我尝试在中定义声明的函数时,它也会抛出类似的错误 实施(CPP)文件。
有什么想法吗?这似乎只发生在这门课上。
另外,如果代码缩进有问题,我很抱歉,我是
答案 0 :(得分:0)
您显示的错误是链接器错误。这意味着编译器认为某些内容存在,但链接器无法找到您定义(未声明)它的位置。某处你需要这样的东西:
GA_Operations::GA_Operations()
{
// construct
}
void GA_Operations::run_algorithm(Blocks_Sequence &b_seq, BinContainer &container)
{
// stuff
}
你有吗?如果是,它是否在Application::execute_Algorithm
所在的文件中?
如果不是,它在哪里?你是如何编译整个程序的,所以这些不同文件中的东西最终都在同一个可执行文件中?
我完全不确定如何让Eclipse做你需要的。我知道这是可能的,但我熟悉纯粹的命令行工具。您需要告诉Eclipse,包含上述定义的.cpp
文件是项目的一部分,应该编译并链接到您创建的可执行文件中。
答案 1 :(得分:0)
原来这是链接器设置的问题。我开始自动生成makefile,问题自行解决。