[Resolvido] Importar dll



  • Boas

    Existe um SDK que me dá um header, librarias e até um .cpp de teste. Pretendo fazer a interface entre o software e um sensor.
    Portanto:
    No .pro adicionei as librarias e o path:
    @LIBS += -L$$PWD\libs\Vicon\ -lViconDataStreamSDK_CPP
    INCLUDEPATH += $$PWD\libs\Vicon\include@

    No .cpp já adicionei o meu header:
    @#include "Client.h"@

    Este header é composto por uma data de classes dentro do namespace que adicionei nos ficheiros sempre que utilizo classes de lá:
    @using namespace ViconDataStreamSDK::CPP;@

    Tudo parece em ordem mas quando faço debug aparece o seguinte erro:

    engine.obj:-1: error: LNK2019: unresolved external symbol "__declspec(dllimport) public: class ViconDataStreamSDK::CPP::Output_Connect __thiscall ViconDataStreamSDK::CPP::Client::Connect(class ViconDataStreamSDK::CPP::String const &)" (_imp?Connect@Client@CPP@ViconDataStreamSDK@@QAE?AVOutput_Connect@23@ABVString@23@@Z) referenced in function "public: void __thiscall Engine::ConnectVicon(void)" (?ConnectVicon@Engine@@QAEXXZ)

    engine.obj:-1: error: LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall ViconDataStreamSDK::CPP::Client::Client(void)" (_imp??0Client@CPP@ViconDataStreamSDK@@QAE@XZ) referenced in function "public: void __thiscall Engine::ConnectVicon(void)" (?ConnectVicon@Engine@@QAEXXZ)

    No header Client.h se comentar o código seguinte passa o problema mas aprecem uma data deles relacionados com as classes que utilizo localizadas no header. Portanto penso que esteja relacionado com este código:

    @#ifdef _EXPORTING
    #define CLASS_DECLSPEC __declspec(dllexport)
    #else
    #define CLASS_DECLSPEC __declspec(dllimport)
    #endif // _EXPORTING@

    Já adicionei as dll e o header nas pastas que estou a trabalhar e na pasta de debug.
    Alguma ideia do que se passa? Estará relacionado com o facto de talvez as librarias terem sido desenvolvidas em VC++ e estar a usar um IDE diferente? Tenho que adicionar algo mais?

    Obrigado



  • leia: https://sites.google.com/site/qxormpostgres/generar-driver-postgres-qt

    procure os passos sobre o aplicativo reimp e dlltool... gere os arquivos .a remova o "_" de todos os nomes de funçoes, gere outra dll com o dlltool e veja se resolve...

    esse problema acontece pq a dll pode nao ser compativel com o mingw.

    essas ferramentas que eu postei converte elas para dlls compativeis..

    espero ter ajudado e desculpe nao ter respondido antes, pois vi o poste e fiquei com preguiça deresponder...

    mas, antes tarde do que nunca, rs

    se resolveu o seu problema poste, pois essa duvida pode ser a de outro...



  • Problema foi resolvido entretanto.

    Estava relacionado com dll de x64 a correr em qt x86, posteriormente foram geradas dll de x86 e ficou resolvido. Queria o impossivel, enfim, amador =).

    Obrigado pelo reply


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.