DLL библиотеки Visual Studio C ++ вылетает в приложении Qt

У меня проблема с разделениемстанд :: строка» данные между библиотекой MS Visual C ++ DLL и программой Qt.

Что у меня есть:

Библиотека DLL написана на Visual C ++ 2010 Express, которая экспортирует один метод:

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

Абстрактный интерфейс »ITest» и класс, реализующий это:

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

Приложение Qt GUI, которое должно:

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

В DLLИнициирование "а"CTest :: GetVersion ()» метод называется. Я'Я ожидаю, что получит "&версия" заполненная строка. Вместо этого я получаю сбои в строке при заполнении "&версия" с новой строкой.

Что я уже сделал:

скачал "Библиотеки Qt 4.8.3 для Windows (VS 2010, 235 МБ) » отhttp://qt-project.org/downloads, установил и выбрал его в QtCreator 'Настройки проекта.

в QtCreator переключился с инструментария MinGW на тот, который установлен с MS Visual Studio 2010 Express.

Я думал, что это решит проблему, потому что я использовал библиотеки Qt, скомпилированные с VS 2010, и графический интерфейс Qt также был скомпилирован с помощью инструментальной цепи VS C ++. К сожалению, проблема не исчезла, поэтому я попробовал сделать последний шаг:

создал консольное приложение Win32 в Visual Studio, загрузил мою DLL через LoadLibrary, использовал "В этом" метод так же, как я делал в Qt GUI ... и это сработало !!

Небольшое наблюдение

В "CTest :: GetVersion ()» Я печатаю этоверсия" строка передается по ссылке на консоль. При использовании консольного приложения VS C ++ оно распечатывается корректно. При использовании приложения Qt - "версия" строка напечатана с мусором вокруг (например, e►┌qwerty27)

Это заставляет меня думать, что ABI приложения Qt и моей DLL по-прежнему несовместимы даже при использовании библиотек Qt VS 2010, упомянутых выше.

Вопросы:Разве использования библиотек Qt для Windows (VS 2010) и набора инструментов Visual Studio недостаточно для преодоления проблем совместимости ABI?Означает ли это, что я должен скомпилировать каркас Qt самостоятельно?Пожалуйста, помогите - любые идеи приветствуются ...

Ответы на вопрос(2)

Ваш ответ на вопрос