Добавление DLL с классом из MS Visual Studio в проект Qt - PullRequest
0 голосов
/ 19 февраля 2020

Я новичок ie в Qt (и в MSVS) и имею некоторую проблему, которую не могу решить сам.

Я пытаюсь интегрировать свой собственный класс (TestClass) из MSVS2019 в мой Qt- проект путем связывания с DLL с этим классом. Я создал DLL-проект в сообществе MSVS-2019 и добавил заголовочные и исходные файлы, как показано в Учебном руководстве Microsoft:

TestClass.h

#ifndef TESTCLASS_H
#define TESTCLASS_H

#ifdef TESTCLASS_EXPORTS
#define MATHLIBRARY_API __declspec(dllexport) 
#else
#define MATHLIBRARY_API __declspec(dllimport)
#endif
    class  MATHLIBRARY_API TestClass {
    private:
        int intTest;
    public:
        double Add(double a, double b);
        double Subtract(double a, double b);
    };
#endif


TestClass.cpp

#include "pch.h"
#include <utility>
#include <limits>

#include "TestClass.h"
double TestClass::Add(double a, double b) {
  return a + b;
}
double TestClass::Subtract(double a, double b) {
  return a - b;
}

Я собрал версию выпуска и скопировал файлы (testclass.dll, testclass.h , testclass.lib) в папку (TestClassDll) внутри моей папки Qt-проекта. Я добавил H-файл в свой проект и связал библиотеку с проектом (выбрав testclass.lib).

testMVS_class.pro

QT -= gui
CONFIG += c++11 console
CONFIG -= app_bundle
DEFINES += QT_DEPRECATED_WARNINGS
SOURCES += \
        main.cpp
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
HEADERS += \
    testClassDll/TestClass.h
win32: LIBS += -L$$PWD/testClassDll/ -lTestQtClassDll
INCLUDEPATH += $$PWD/testClassDll
DEPENDPATH += $$PWD/testClassDll

Я создаю TestClass tcObject в main. cpp

main.cpp

#include <QCoreApplication>
#include <QDebug>
#include <TestClass.h>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    TestClass tcObject;
    double result;
    result = tcObject.Add(1.0,2.0);
    result = tcObject.Subtract(1.0,2.0);
    return a.exec();
}

При создании проекта я получаю 2 ошибки вызова метода:

error1
…\_TestMVS_Class\testMVS_class\main.cpp:14: error: undefined reference to `_imp___ZN9TestClass3AddEdd'

error2
…\_TestMVS_Class\testMVS_class\main.cpp:15: error: undefined reference to `_imp___ZN9TestClass8SubtractEdd'

Что я сделал не так и как я могу решить эту проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...