可能重复:
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() {
.........
}
有人对此有所了解吗? 感谢
答案 0 :(得分:0)
我建议您检查已定义(未声明)类ClientFactory
的源文件,并确保您拥有方法createProcessCreator()
的实现。有可能拥有一个有效的类并创建它的一个实例,即使它的一个方法被声明但没有实现。
另外,请检查您的链接命令,以确保您链接到您认为包含此方法的目标文件。
P.S。还要检查该方法的拼写和大写,以确保它在任何地方都匹配(虽然我认为如果这是问题,你会遇到其他编译错误。)