Qt — Помощь по связыванию динамической библиотеки

У меня куча проблем с простой задачей связать DLL с моим проектом Qt.

Мои шаги:

  1. В Qt я захожу в «Файл -> Новый файл или проект -> Другой проект -> Библиотека C ++»
  2. Добавить calc метод к моему mylibrary.h.
  3. Реализовать calc метод в моем mylibrary.cpp.
  4. Я компилирую, и я иду в каталог, где .a а также .dll файлы были созданы.
  5. Я создаю новый проект: «Файл -> Новый файл или проект -> Проект Qt Widget -> Приложение Qt Gui»
  6. Я копирую и вставляю все заголовочные файлы из MyLibrary в C:/Users/Me/includes, так же как MyLibrary.dll а также libMyLibrary.a в C:/Users/Me/,
  7. Затем я захожу в файл проекта моего Qt Widget Project (шаг 5).

Я добавляю путь включения, а также путь к DLL:

INCLUDEPATH += "C:/Users/Me/includes"LIBS += "C:/Users/Me/MyLibrary.dll"

Затем я иду в мой mainwindow.cppи поместите этот код:

#include "mainwindow.h"#include "ui_mainwindow.h"
#include <QDebug>
#include "mylibrary.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);

MyLibrary myLib;
qDebug() << myLib.calc();
}

MainWindow::~MainWindow()
{
delete ui;
}

И конечно, я получаю неопределенные ошибки:

C:\Users\Me\Desktop\TestInternals-Win\..\TestInternals\mainwindow.cpp:15: error: undefined reference to `_imp___ZN13MyLibrary4calcEv'

C:\Users\Me\Desktop\TestInternals-Win\..\TestInternals\mainwindow.cpp:15: error: undefined reference to `_imp___ZN13MyLibrary4calcEv'

:-1: error: collect2: ld returned 1 exit status

Содержимое файла MyLibrary

mylibrary.h содержание:

#ifndef MYLIBRARY_H
#define MYLIBRARY_H

#include "MyLibrary_global.h"
class MYLIBRARYSHARED_EXPORT MyLibrary{
public:
MyLibrary();
int calc();
};

#endif // MYLIBRARY_H

mylibrary.cpp содержание:

#include "mylibrary.h"
MyLibrary::MyLibrary()
{
}

int calc()
{
return 5;
}

Я не трогал сгенерированный Qt файл MyLibrary_global.h

Спасибо за любую помощь.

1

Решение

Вы определяете одиночество calc функция вместо MyLibrary::calc, пытаться:

mylibrary.cpp

#include "mylibrary.h"
MyLibrary::MyLibrary()
{
}

int MyLibrary::calc()
{
return 5;
}
3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector