1

我想用 Qt 做一些开发工作。我已经构建了几个小应用程序并遵循了一些教程。一切都很好,看起来很简单。

要完成的开发涉及使用包含在 win32 dll 中的现有代码。我想以最小的麻烦重用这段代码并将它们链接到我的 Qt 应用程序中。我有头文件、库和 dll,所以我将在编译时链接而不是在运行时动态链接。

我曾尝试这样做,但 Qt 总是抱怨总是抱怨链接错误类似于: main.obj:-1: error: LNK2019: unresolved external symbol _ imp _Add referenced in function _main

无论我如何调整 .pro 文件,它总是会抱怨。

我花了很多时间在谷歌上搜索并找到了一些信息片段。我找不到一个能说出整个故事的答案。我所追求的是一组步骤,一个需要遵循的序列之类的教程。Qt 安装示例中甚至可能有一个示例,但我一直找不到。

这是我一直试图开始工作以继续进行主要开发的简单“组合”。它基于 MS 教程 dll MathsFunc。

win32 dll:

// Visual Studio 2005
//Funcs.h
#ifdef MATHFUNCS_EXPORTS
    #define MATHFUNCSDLL_API __declspec(dllexport)
#else
    #define MATHFUNCSDLL_API __declspec(dllimport) 
#endif

#ifdef __cplusplus
extern "C" {                    /* Assume C declarations for C++ */
#endif

// Returns a + b
MATHFUNCSDLL_API double Add(double a, double b); 

#ifdef __cplusplus
}                   /* Assume C declarations for C++ */
#endif

//Funcs.cpp
#include "Funcs.h"

double Add(double a, double b)
{
    return a + b;
}

导入 dll 的 Qt 应用程序。

//main.cpp
#include <QCoreApplication>

#include "../../mathfuncs/funcs.h"

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    double dResult = Add(1.0,2.0);

    printf("1 + 2 = %f\n",dResult);

    return a.exec();
}

//Qt项目文件.por

#-------------------------------------------------
#
# Project created by QtCreator 2013-03-04T09:16:18
#
#-------------------------------------------------

QT       += core

QT       -= gui

TARGET = Useit
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app

SOURCES += main.cpp

INCLUDEPATH += c:/tmp/mathfuncs

HEADERS += c:/tmp/mathfuncs

LIBS += c:/tmp/mathfuncs/MathFuncs.lib

提前感谢您的任何意见。

D.

4

0 回答 0