QLibrary - importiere eine Klasse

Ich habe eine QT-Bibliothek und möchte diese in ein anderes Projekt importieren.

Nun, da ich das möchte, muss das andere Projekt, auch wenn ich die Bibliothek ändere, nicht erneut kompiliert werden. Ich habe angefangen, QLibrary zu verwenden.

Aber ... Ich kann keine Klasse importieren. Oder besser, ich kann die Klasse importieren, aber nicht auf ihre Methoden zugreifen.

Dies ist das Beispiel, das ich gemacht habe.

Dies ist die Klassendeklaration:

class TESTDLL_LIBSHARED_EXPORT TestDLL_lib
{

public:
    TestDLL_lib();

    int a;
    int b;
    int c;

    int getValues();
}; 

und dies ist die Implementierung:

#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();
}

während dies die Hauptdatei ist, im anderen Projekt:

#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();
    }
}

etzt kann ich auf alle Datenwerte zugreifen a, b, c) des ObjektsmyClassInstance (und wenn ich sie in der DLL ändere, werden sie auch im Programm ohne einen Neuaufbau geändert), aber ich kann @ nicht aufrufmyClassInstance->getValues() weil ich @ bekom

main.obj:-1: error: LNK2001: unresolved external symbol "__declspec(dllimport) public: int __thiscall TestDLL_lib::getValues(void)" (__imp_?getValues@TestDLL_lib@@QAEHXZ)

Wie kann ich das lösen? Ist es möglich, Methoden aus importierten Klassen aufzurufen?

Vielen Dank.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage