2014-03-26 72 views
0

我是新的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()”,当我尝试创建对象,并从代码调用它。

+1

什么是确切的错误? – anderas

+0

“找不到-llibiiMaglib” – user2880783

+0

您是否在库的专业文件中定义了IMAGLIB_LIBRARY? – Nejat

回答

0

如果建库的名称是“libimaglib”,那么你应该使用-l开关这样

-limaglib 

你可以把它看作-l取代“LIB”。希望有所帮助!