我想用 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.