我在mingw下使用g ++构建了一个简单的dll: 我们有一个包含文件:
#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文件时,我不断地将未定义的引用错误添加到我的dll函数中。我想指出路径指向我的.a导入库的位置,.dll本身位于系统路径中。我在这做错了什么?
答案 0 :(得分:0)
Mea Culpa!看来我在64位MinGW下编译了我的库,但Qt Creator默认为32位工具链。人们可能会认为链接器可能已经能够确定错误并生成更有用的错误消息但我们去了。获得的经验 - 确保您使用的是您认为正在使用的工具。