Как импортировать классы в dll-файлах из MSVC в Qt? - PullRequest
0 голосов
/ 02 февраля 2012

Я хочу использовать класс, определенный в проекте MSVC, в проекте Qt.Я знаю, что мне нужно использовать компилятор Microsoft Visual Studio C ++ в Qt, чтобы получить доступ ко всем методам класса.Мне удалось импортировать библиотеку и так далее, но когда я пытаюсь создать экземпляр класса, определенного в библиотеке, моя программа падает, и я не могу понять, почему.Пример:

MyClass.h:
#ifdef MY_EXPORTS
#define MY_API __declspec(dllexport)
#else
#define MY_API __declspec(dllimport)
#endif


class MY_API MyClass {
   public:
       void myCoolMethod();
}

Я компилирую проект как MYPROJECT с MyClass как dll, а MSVC также создает файл * .lib. Поэтому я получаю MYPROJECT.lib и MYPROJECT.dll, которые я включаю в файл * .pro.файл Qt выглядит следующим образом:

LIBS + = -L "C: \ THEPATHTOTHELIB \" -lMYPROJECT

Теперь в main.cpp моего проекта Qt я хочу сделать:

#include <MyClass.h>

void main() {
....
MyClass *m = new MyClass();
m->myCoolMethod();
....
}

Но из окна вывода Qt я получаю следующее:

Запуск C: \ PATHBLA \ MYQTPROJECT.exe ...

C: \ PATHBLA \ MYQTPROJECT.exe закрыт, Возвращаемое значение -1073741515

Это означает, что мой проект Qt потерпел крах, и я не знаю почему.Когда я удаляю две строки в основной функции, то все работает нормально.И я не могу понять, почему.Когда я использовал компилятор mingw для включения DLL из других проектов, тогда все работало нормально.Так что, возможно, я что-то здесь упускаю при создании DLL в MSVC.Обычно это очень простая и простая работа, может быть, кто-то делал это раньше?

Я использую win32-msvc2010 для qmake.exe

jom.exe используется в качестве шага Make step

И я использую MSVC 2010 и Qt 4.8

Все dll, скомпилированные с MSVC 2010, скомпилированы с опцией debug

Спасибо всем за помощь!

...