如何解决无法从动态链接的抽象基类导出方法
我有不同 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 举报,一经查实,本站将立刻删除。