【问题标题】:Qt - Help Linking Dynamic LibraryQt - 帮助链接动态库
【发布时间】:2013-01-31 02:12:32
【问题描述】:

我在将 DLL 链接到我的 Qt 项目的简单任务中遇到了很多麻烦。

我的步骤:

  1. 在 Qt 中,我转到“文件 -> 新建文件或项目 -> 其他项目 -> C++ 库”
  2. calc 方法添加到我的mylibrary.h
  3. 在我的 mylibrary.cpp 中实现 calc 方法。
  4. 我编译,然后转到创建.a.dll 文件的目录。
  5. 我创建了一个新项目:'File -> New File or Project -> Qt Widget Project -> Qt Gui Application'
  6. 我将所有头文件从 MyLibrary 复制并粘贴到 C:/Users/Me/includes,以及将 MyLibrary.dlllibMyLibrary.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文件

感谢您的帮助。

【问题讨论】:

  • 你想链接MyLibrary.lib' instead of MyLibrary.dll`?
  • 我没有 .lib,但我有 .a。我也尝试过链接 .a,但这也不起作用。
  • .a sosunds 就像它是使用 gcc 编译的,而不是 Visual Studio。

标签: c++ qt dll linker dynamic-linking


【解决方案1】:

你定义一个独立的calc函数而不是MyLibrary::calc,试试:

mylibrary.cpp

#include "mylibrary.h"

MyLibrary::MyLibrary()
{
}

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

【讨论】:

    猜你喜欢
    • 2020-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多