微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法从动态链接的抽象基类导出方法

如何解决无法从动态链接的抽象基类导出方法

我有不同 dll 的项目。在一个 dll 中,我有这个抽象类:

文件 serializable.hpp (Json.dll)

namespace Json
{
    class Serializable
    {
    public:
        JSON_API virtual void FromJson(const char* json);
        JSON_API virtual void FromJson(const JsonValue& json) = 0;
        JSON_API virtual std::string ToJson() const = 0;
    };
}

对于 virtual void FromJson(const char* json) 的这种实现:

文件 serializable.cpp (Json.dll)

void Json::Serializable::FromJson(const char* json)
{
    Json::JsonValue d(json);
    FromJson(d); // which is the virtual void FromJson(const JsonValue& json) = 0 method
}

第二个dll中,我有这个派生类:

文件 calendar.hpp (Data.dll)

namespace Data
{
    class Calendar : public Json::Serializable
    {
    public:
        DATA_API virtual void FromJson(const Json::JsonValue& json);
        DATA_API virtual std::string ToJson() const;
}

我在哪里实现 void FromJson(const Json::JsonValue& json)std::string ToJson()

但是当我尝试从基类 virtual void FromJson(const char* json) 调用 Json::Serializable 时,它没有找到它。在(第三个)可执行项目中:

文件 main.cpp (Console.exe)

int main()
{
    MarketData::Calendar;
    c.FromJson("{ \"day\":  1,\"month\":  1 }"); // Get compiler error: E0415  no suitable constructor exists to convert from "const char [27]" to "Json::JsonValue"
}

旁注:上面的所有 X_API 宏都用于 dll 导出/导入。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。