连接在QtCreator
问题描述:
一个dll未定义引用错误
我已经建立了使用G ++一个简单的DLL下的MinGW: 我们已经包含文件:连接在QtCreator
#ifndef __TESTDLL_H
#define __TESTDLL_H
class sineCalculator
{
double n;
public:
sineCalculator();
sineCalculator(double);
double sine();
void setAngle(double);
};
#endif
然后实现CPP:
#include <testdll.h>
#include <math.h>
sineCalculator::sineCalculator()
{
n = 0;
}
sineCalculator::sineCalculator(double x)
{
n = x;
}
double sineCalculator::sine()
{
return sin(n);
}
void sineCalculator::setAngle(double x)
{
n = x;
}
这是我编译为dll.producing既是一个.dll文件,并.A导入库的名称visaTest.dll和libvisaTest.a
我可以写一个小程序,并链接到这个dll成功地使用命令行 - 没有Qt只是g ++。我可以创建对象并运行所有方法。
但是,我现在想将这个库添加到QtCreator中的Qt应用程序。我遵循的几个问题的建议,并添加这些行到我的.pro文件:
INCLUDEPATH += C:/msys64/home/hoyla/libs/
INCLUDEPATH +=C:/msys64/home/hoyla/includes/
DEPENDPATH +=C:/msys64/home/hoyla/libs/
win32:CONFIG(release, debug|release): LIBS += -LC:/msys64/home/hoyla/libs/ -lvisaTest
else:win32:CONFIG(debug, debug|release): LIBS += -LC:/msys64/home/hoyla/libs/ -lvisaTest
else:unix: LIBS += -L$$PWD/../../../../libs/ -lvisaTest
虽然我在这里使用了一些绝对路径我也试图与相对路径。但是,在构建Qt文件时,我不断收到未定义的参考错误。我会指出路径指向我的.a导入库的位置,.dll本身在系统路径中。我在这里做错了什么?
答
Mea Culpa!似乎我已经在64位MinGW下编译了我的库,但Qt Creator默认为32位工具链。人们会认为链接器可能已经能够确定这是错误,并生成更有用的错误消息,但我们现在就去。获得的教训 - 确保您使用的是您认为正在使用的工具。