2014-03-26 95 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」。希望有所幫助!