簡體   English   中英

在Qt中創建C ++庫

[英]Creating c++ library in Qt

我是linux和Qt的新手,正在嘗試在Qt中創建c ++庫。 我有一個名為imaglib的庫,其中包含幾個類。 到目前為止,我已經做到了:

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構建應用程序時,它給了我同樣的錯誤,並且給了我同樣的錯誤。 如何解決這個問題?

編輯

我也嘗試在終端中創建.lib文件,並將其包含在application.pro文件中,如上面顯示的.so文件。 它有效,但給了我不同的錯誤:

當我嘗試創建對象並從代碼中調用它時,“對imagClass :: ImagOperation()的未定義引用”。

如果構建的庫的名稱是“ libimaglib”,則應使用-l開關,如下所示

-limaglib

您可以將其視為-l替換“ lib”。 希望有幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM