Эй, я пытаюсь написать Game-Engine, и я пытался экспортировать класс в Dll и пытался использовать его в своем основном коде. Как и использование функции loadlibrary()
. Я знаю, как экспортировать и использовать функции в и из Dll. Но я хочу экспортировать классы, а затем использовать их так же, как я использую функции. Я не хочу include <headers>
для этого класса, а затем его использовать. Я хочу, чтобы это было временем выполнения. У меня есть следующий код для очень простого класса, который я использовал, чтобы просто экспериментировать с ним.Как использовать экспортированный класс из DLL
#ifndef __DLL_EXP_
#define __DLL_EXP_
#include <iostream>
#define DLL_EXPORT __declspec(dllexport)
class ISid
{
public:
virtual void msg() = 0;
};
class Sid : public ISid
{
void msg()
{
std::cout << "hkjghjgulhul..." << std::endl;
}
};
ISid DLL_EXPORT *Create()
{
return new Sid();
}
void DLL_EXPORT Destroy(ISid *instance)
{
delete instance;
}
#endif
Как это использовать в моем основном коде? Любая помощь будет действительно оценена. В случае, если это важно, я на Visual Studio 2012.
http://stackoverflow.com/questions/110833/dynamically-importing-ac-class-from-a-dll – user2176127
Несмотря на то, что приведенная выше нить хороша, одним словом, вы можете взять класс интерфейса из dll в отдельный заголовок, а затем методы вызова с помощью базового указателя, назначенного экземпляру Create-ed. –
Решение в нем показывает, как загружать функции из Dll, и я это уже знаю. Я не могу понять, как загрузить класс. Я не уверен, как загрузить эту функцию Create, так как при создании typdef для этого мне нужен тип возврата, но я не хочу включать заголовок. – Xk0nSid