使用c ++获取错误“未定义引用...”

时间:2013-01-11 16:23:21

标签: c++ linker-errors

  

可能重复:
  What is an undefined reference/unresolved external symbol error and how do I fix it?

#include <FakeMas.h>
#include <zinc-testsupport-client-api/ClientFactory.h>
#include <zinc-testsupport-client-api/Process.h>
#include <zinc-testsupport-client-api/ProcessCreator.h>

    FakeMas::FakeMas() {    
        ClientFactory &clientFactory(PluginFactory::getInstance<ClientFactory>(pluginConfig));
        boost::shared_ptr<ProcessCreator> webServerProcessCreator = clientFactory.createProcessCreator();
    }

当我构建它时,我收到错误说:

...../src/.libs/libZincTestWebServer.so: undefined reference to `zinc::testsupport::client::ClientFactory::createProcessCreator()'
有趣的是,如果我评论第二行的课程

boost::shared_ptr<ProcessCreator> webServerProcessCreator = clientFactory.createProcessCreator()

然后它将建立成功

所以我感到困惑,似乎没有链接问题,因为它可以用

构建
ClientFactory &clientFactory(PluginFactory::getInstance<ClientFactory>(pluginConfig))

那怎样才能找到类但却找不到函数??

BTW,我认为该函数是以正确的方式声明和定义的:

boost::shared_ptr<ProcessCreator> ClientFactory::createProcessCreator() {
    .........
}

有人对此有所了解吗? 感谢

1 个答案:

答案 0 :(得分:0)

我建议您检查已定义(未声明)类ClientFactory的源文件,并确保您拥有方法createProcessCreator()的实现。有可能拥有一个有效的类并创建它的一个实例,即使它的一个方法被声明但没有实现。

另外,请检查您的链接命令,以确保您链接到您认为包含此方法的目标文件。

P.S。还要检查该方法的拼写和大写,以确保它在任何地方都匹配(虽然我认为如果这是问题,你会遇到其他编译错误。)