我是新的Linux和Qt,我试图在Qt中创建C++库。 我有一个名为imaglib的库,里面有几个类。到目前为止,我已经做到了这一点:在Qt中创建C++库
imaglib_global.h:
#ifndef IMAGLIB_GLOBAL_H
#define IMAGLIB_GLOBAL_H
#include <QtCore/qglobal.h>
#if defined(IMAGLIB_LIBRARY)
# define IMAGLIBSHARED_EXPORT Q_DECL_EXPORT
#else
# define IMAGLIBSHARED_EXPORT Q_DECL_IMPORT
#endif
#endif // IMAGLIB_GLOBAL_H
imaglib.h:
#ifndef IMAGLIB_H
#define IMAGLIB_H
#include "imaglib_global.h"
#include "imagClass.h"
class IMAGLIBSHARED_EXPORT IMaglib
{
public:
IMaglib();
};
#endif // IMAGLIB_H
imagClass.h:
#include "imaglib_global.h"
class IMAGLIBSHARED_EXPORT imagClass
{
public:
imagClass();
void ImagOperation();
// Other data goes here
};
// there are several imag classes
当我建立这个它的工作原理并在调试文件夹中创建.o文件和.so,.so.1,.so.1.0和.so.1.0.0,但是当我尝试将其包含在应用程序中时,它不会工作ķ。我一直在努力,这些文件在我的项目叫imagLib文件夹中复制,并将此代码application.pro文件:
TARGET = MyApp
TEMPLATE = app
DEPENDPATH += imagLib
INCLUDEPATH += imagLib
LIBS+= -L imaglib/debug -llibiMaglib
// It creates libiMaglib.so file so I thought I should use this one but it gives me error on compilation "cannot find -llibiiMaglib"
在那之后我试图从终端建库:
ar crv imaglibrary.so imaglib.o imagClass.o
但它给了我同样的错误,当我尝试用imaglibrary.so构建应用程序时,它给了我同样的错误。如何解决这个问题?
EDIT
我还试图以在终端的.lib文件并将其包含在如上所示.so文件application.pro文件。它的工作原理,但它给了我不同的错误:
“未定义的引用imagClass :: ImagOperation()”,当我尝试创建对象,并从代码调用它。
什么是确切的错误? – anderas
“找不到-llibiiMaglib” – user2880783
您是否在库的专业文件中定义了IMAGLIB_LIBRARY? – Nejat