这些是一些定义,我想实现一个插件结构。 演示插件类:
// democlass.h
#include "DemoClass.h"
#include "include/plugins/v1/BaseClass.h"
#include "include/plugins/v1/PluginAgent.h"
#include "Poco/ClassLibrary.h"
class DemoClass : public BaseClass{
public:
explicit DemoClass() : BaseClass(){
}
~DemoClass() override;
std::string Agent(PluginAgent* agent) override;
};
及其源文件:
//democlass.cpp
DemoClass::~DemoClass() {
}
std::string DemoClass::Agent(PluginAgent* agent){
agent->GetRelativePluginRef("democlass2");
return "";
}
POCO_BEGIN_MANIFEST(BaseClass)
POCO_EXPORT_CLASS(DemoClass)
POCO_END_MANIFEST
这是 PluginAgent:
//PluginAgent.h
#include "BaseClass.h"
class BaseClass;
class PluginAgent{
public:
PluginAgent() = default;
BaseClass* GetRelativePluginRef(const std::string& pluginsName);
}
我想要的是获取其他插件指针并使用它,但是,当我编译它时,出现未知符号错误
GetRelativePluginRef
,这意味着我需要包含 Agent.cpp。但是 Agent.cpp 将包含其他源文件,这意味着我需要包含整个框架文件。
我想要的只是仅包含 Agent 头文件,当框架加载插件时,Agent 实例将通过
std::string Agent(PluginAgent* agent)
方法传递给插件。