0

可能重复:
什么是未定义的引用/未解决的外部符号错误,我该如何解决?

#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))

那么它如何找到类但找不到功能?

顺便说一句,我认为该函数是以正确的方式声明和定义的:

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

有人知道吗?谢谢

4

1 回答 1

0

我建议检查您定义(未声明)类的源文件ClientFactory,并确保您有方法的实现createProcessCreator()。即使声明了其中一个方法但未实现,当然也可以拥有一个有效的类并创建它的实例。

还要检查您的链接命令,以确保您正在链接您认为包含此方法的目标文件。

PS 还要检查该方法的拼写和大小写,以确保它在任何地方都匹配(尽管我认为如果这是问题所在,您会遇到其他编译错误)。

于 2013-01-11T18:03:08.220 回答