在插件加载结构中仅使用带有 C++ 头文件的类

问题描述 投票:0回答:0

这些是一些定义,我想实现一个插件结构。 演示插件类:

// 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)
方法传递给插件。

c++ poco-libraries
© www.soinside.com 2019 - 2024. All rights reserved.