Путь к библиотеке определенно правильный и может создать экземпляр указанной библиотеки, но при вызове любой функции вы C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Путь к библиотеке определенно правильный и может создать экземпляр указанной библиотеки, но при вызове любой функции вы

Сообщение Anonymous »

Я использую Qt Creator для создания нового проекта, и у меня есть тестовая библиотека MathLibrary, созданная в Visual Studio. Я хочу использовать эту библиотеку в своем проекте Qt.

Я много часов искал ответ на свое решение, и почти во всех случаях ответ был просто: библиотека не был добавлен в PATH в файле .pro. Я на 99% уверен, что все сделал правильно, но что-то заставляет меня получать ошибку «Неопределенная ссылка» при попытке вызвать любую функцию в этой библиотеке. Вот что у меня есть на данный момент.

Библиотека –

MathLibraryH.h:

Код: Выделить всё

#pragma once

namespace MathLibrary
{
class Functions
{
public:
// Returns a + b
double Add(double a, double b);

// Returns a * b
double Multiply(double a, double b);

// Returns a + (a * b)
double AddMultiply(double a, double b);
};
}
MathLibrary.cpp:

Код: Выделить всё

#include "stdafx.h"
#include "MathLibraryH.h"

namespace MathLibrary
{
double Functions::Add(double a, double b)
{
return a + b;
}

double Functions::Multiply(double a, double b)
{
return a * b;
}

double Functions::AddMultiply(double a, double b)
{
return a + (a * b);
}
}
Проект QT -

TestQTProject.pro:

Код: Выделить всё

    QT       += core gui \
network

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = TestQTProject
TEMPLATE = app

DEFINES += QT_DEPRECATED_WARNINGS

#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

SOURCES += \
main.cpp \
mainwindow.cpp \

HEADERS += \
mainwindow.h \

FORMS += \
mainwindow.ui

DISTFILES += \
com_github_msorvig_s3.pri

LIBS += -L$$PWD/../Libs -lMathLibrary

INCLUDEPATH += $$PWD/../Incs
mainwindow.cpp:

Код: Выделить всё

#include "MathLibraryH.h"

// .... other stuff ....

void MainWindow::on_btnStage1_clicked()
{
MathLibrary::Functions lib; // This is just fine
lib.Add(5, 9); // The "Add" function (or any other function in the library)
causes an undefined reference error
}
Я все еще новичок в Qt, но не понимаю, что не так с этим кодом.

Другие вещи, которые я пробовал на основе ответов поиска:

Добавление следующего кода в MathLibrary.h:

Код: Выделить всё

#ifdef MATHLIBRARY_EXPORTS
#define MATHLIBRARY_API __declspec(dllexport)
#else
#define MATHLIBRARY_API __declspec(dllimport)
#endif
Изменение формата объявления LIBS в файле .pro на все следующие:

Мульти- строка:

Код: Выделить всё

LIBS += -L$$PWD/../Libs
LIBS += -lMathLibrary
Жестко запрограммированная одна строка:

Код: Выделить всё

LIBS += -LC:\svn\software\WIP\TestQTProject\Libs -lMathsLibrary
Ничто из того, что я сделал, не работает, и у меня не осталось других идей.

Что бы это ни стоило, библиотека отлично работает в любом проекте, созданном с помощью Visual Studio, и я пробовал создать как статическую, так и динамическую библиотеку.

Подробнее здесь: https://stackoverflow.com/questions/483 ... -library-b
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»