QLibrary - importar uma classe
Eu tenho uma biblioteca QT e quero importá-la em outro projeto.
Agora, como quero que, mesmo quando modifique a biblioteca, o outro projeto não precise ser compilado novamente, comecei a usar o QLibrary.
Mas ... não consigo importar uma aula. Ou melhor, posso importar a classe, mas não consigo acessar seus métodos.
Este é o exemplo que eu fiz.
Esta é a declaração de classe:
class TESTDLL_LIBSHARED_EXPORT TestDLL_lib
{
public:
TestDLL_lib();
int a;
int b;
int c;
int getValues();
};
e esta a implementação:
#include "testdll_lib.h"
TestDLL_lib::TestDLL_lib()
{
a = 10;
b = 20;
c = 30;
}
int TestDLL_lib::getValues()
{
return a+b+c;
}
extern "C" TESTDLL_LIBSHARED_EXPORT TestDLL_lib* create_TestDLL_lib()
{
return new TestDLL_lib();
}
enquanto este é o arquivo principal, no outro projeto:
#include <testdll_lib.h>
#include <QDebug>
#include <QLibrary>
int main(int argc, char *argv[])
{
QLibrary library("TestDLL_lib");
if (library.load())
{
typedef TestDLL_lib* (*create_TestDLL_lib_fun)();
create_TestDLL_lib_fun create_TestDLL_lib = (create_TestDLL_lib_fun)library.resolve("create_TestDLL_lib");
if (create_TestDLL_lib)
{
TestDLL_lib *myClassInstance = create_TestDLL_lib();
if (myClassInstance)
{
//qDebug() << QString::number(myClassInstance->getValues());
qDebug() << QString::number(myClassInstance->a) + " " + QString::number(myClassInstance->b) + " " + QString::number(myClassInstance->c);
}
}
library.unload();
}
}
Agora, eu posso acessar todos os valores de dados (a
, b
, c
) do objetomyClassInstance
(e, se eu os alterar na DLL, eles também serão alterados no programa sem uma reconstrução), mas não posso chamarmyClassInstance->getValues()
porque eu recebo
main.obj:-1: error: LNK2001: unresolved external symbol "__declspec(dllimport) public: int __thiscall TestDLL_lib::getValues(void)" (__imp_?getValues@TestDLL_lib@@QAEHXZ)
Como posso resolver isso? É possível chamar métodos de classes importadas?
Obrigado..