Я новичок 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'
Что я сделал не так и как я могу решить эту проблему?