Qt并使用现有的win32 dll

时间:2013-03-04 12:29:16

标签: qt dllexport

我想使用Qt进行一些开发工作。我已经构建了几个小应用程序并遵循 一些教程。一切都很好,似乎很直接。

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

我试过这样做但Qt总是抱怨总是抱怨链接错误类似于: main.obj:-1:错误:LNK2019:未解析的外部符号_ imp _Add在函数_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

0 个答案:

没有答案