Biblioteca Visual Studio C ++ dll falha no aplicativo Qt

Eu tenho um problema de compartilhamento de dados "std :: string" entre biblioteca DLL do Microsoft Visual C ++ e programa Qt.

O que eu tenho são:

Biblioteca DLL escrita no Visual C ++ 2010 Express, que exporta um método:

extern "C" __declspec(dllexport) int Init(ITest* commandTest);

Interface abstrata "ITest" e uma classe implementando:

class CTest: public ITest
{
public:
    CTest();
    virtual ~CTest();
    virtual void getVersion(std::string & version) const;
};

Aplicativo Qt GUI que precisa:

* load the DLL dynamically
* instantiate CTest and pass it to exported Init method.

No "Init" da DLL, é chamado um método "CTest :: getVersion ()". Eu esperaria receber a string "& version" preenchida. O que eu recebo são falhas na linha quando eu preenho "& version" com uma nova string.

O que eu já fiz:

baixado "bibliotecas Qt 4.8.3 para Windows (VS 2010, 235 MB)" dehttp://qt-project.org/downloads, instalou-o e selecionou-o nas configurações do projeto do QtCreator.

no QtCreator mudou de toolchain MinGW para o instalado com o MS Visual Studio 2010 Express.

Eu pensei que ele iria superar o problema, porque eu usei bibliotecas Qt compiladas com o VS 2010 e o Qt GUI também foi compilado com o toolchain VS C ++. Infelizmente o problema não foi embora, então eu tentei o último passo:

criei o aplicativo Win32 Console no Visual Studio, carreguei minha DLL via LoadLibrary, usei o método "Init" da mesma forma que fiz no Qt GUI ... e funcionou !!

Pequena observação

Em "CTest :: getVersion ()" estou imprimindo esta "versão" string passada por referência ao console. Ao usar o aplicativo do console VS C ++ como um host, ele é impresso corretamente. Ao usar o aplicativo Qt, a sequência "versão" é impressa com algum lixo (por exemplo, ┌►☻qwerty27)

Isso me faz pensar que o ABI do aplicativo Qt e minha DLL ainda é incompatível, mesmo quando usando as bibliotecas do Qt VS 2010 mencionadas acima.

Questões:O uso de bibliotecas do Qt para Windows (VS 2010) e do conjunto de ferramentas do Visual Studio não é suficiente para superar os problemas de compatibilidade do ABI?Isso significa que eu deveria compilar o framework Qt sozinho?Por favor, ajude - quaisquer idéias são bem vindas ...

questionAnswers(2)

yourAnswerToTheQuestion