當前位置:首頁 » 編程軟體 » qt編譯動態庫

qt編譯動態庫

發布時間: 2022-02-10 01:06:51

⑴ 怎樣在Qt中建立使用動態鏈接庫

工具/原料
安裝有Qt集成開發環境的Windows或linux
一、建立並生成動態鏈接庫
1
首先在磁碟的某個位置建立一個名為DllDemo的文件夾
打開QtCreator,新建工程,選擇Library,C++庫,然後就是choose。
2
然後在彈出的C++庫對話框默認類型共享庫,名稱為MyDll。路徑就是剛才建立的DllDemo文件夾。然後,一直下一步,直到點擊完成。
3
來看看程序結構,以及pro文件內容。
可以看到系統自動生成了一個mydll_global.h的文件。
pro內也自動生成了一些內容。可以看到TEMPLATE = lib,而不是平時的TEMPLATE = app。
4
再來看看mydll_global.h的內容。
可以看到系統自動定義了兩個宏。用於聲明哪些函數是需要導出的。
5
下面來給代碼添加點內容,以便於待會使用。
首先我們在mydll.h中添加幾行代碼,
注意:extern "C" MYDLLSHARED_EXPORT必須要有。
6
再來看看mydll.cpp中的實現代碼,都比較簡單。
7
代碼編寫完畢後,直接構建就行了。然後就可以看到生成的dll了。
二、測試生成的DLL
1
新建一個基於Qt的控制台應用程序,名稱為DllTest。依然放置在DllDemo的目錄下。
2
建好了以後,就可以在main.cpp寫代碼了。通過QLibrary類來載入dll。
因為要獲得類對象的實例,所以需要將mydll.h包含進來。
要注意的是,我沒有對函數是否成功獲取做檢測。
來看看代碼:
3
代碼寫完後就可以構建程序了。不過要運行程序,還需要將剛才生成的dll拷貝到程序的同級目錄。
4
在IDE中運行程序,因為生成的是debug版的程序,相關的環境變數未設置,無法獨立運行。
可以看到dll工作的很好,程序運行正常。
三、善用Assistant
1
最後來看看Assistant中關於QLibrary的描述。比較費解的是,Assistant中並沒有對創建共享庫做詳細的說明,估計是這個太簡單或資料太多了吧。

⑵ windows下qt怎麼編譯靜態鏈接庫

一般分為動態庫和靜態庫,方法分別如下:
一.
靜態庫的生成
1.
測試目錄:
lib
2.
源碼文件名:
mywindow.h,
mywindow.cpp
3.
編寫項目文件:
mywindow.pro
注意兩點:
TEMPLATE
=
lib
CONFIG
+=
staticlib
4.
生成Makefile:
qmake
mywindow.pro

⑶ 如何編譯動態庫/靜態庫之編譯Qt4.8.5靜態庫

1. 下載Qt 。需要注冊一下賬號!


a) 選擇你需要的版本


⑷ 如何用Qt調用matlab生成的動態庫

動態庫的生成
1>首先生成目標文件,但是此時要加編譯器選項-fpic和鏈接器選項-shared,

gcc -fpic -c add.c

gcc -fpic -c sub.c

生成中間文件add.o和sub.o

2>其次生成動態庫

gcc -shared –o libtiger.so add.o sub.o

生成動態庫libtiger.so,libtiger.so就是我們生成的目標動態庫。我們以後使用動態庫和main.c程序生成可執行程序

說明:

以上兩部也可以合成一步搞定:

gcc -fpic -shared add.c sub.c -o libtiger.so

2.使用動態鏈接庫

在編譯程序時,使用動態鏈接庫和靜態庫是一致的,使用」-l庫名」的方式,在生成可執行文件的時候會鏈接庫文件。

1>使用命令:

gcc -o main main.c -L ./ -ltiger

2>-L指定動態鏈接庫的路勁,-ldtiger鏈接庫函數tiger。-ltiger是動態庫的調用規則。Linux系統下的動態庫命名方式是lib*.so,而在鏈接時表示位-l*,*是自己命名的庫名。

3>但是程序會提示如下錯誤

error while loading shared libraries: libtiger.so: cannot open shared object file: No such file or direct

這是因為程序運行時沒有找到動態鏈接庫造成的。程序編譯時鏈接動態庫和運行時使用動態鏈接庫的概念是不同的,在運行時,程序鏈接的動態鏈接庫需要在系統目錄下才行。

4>使用以下方法可以解決此問題

a. 在linux下最方便的解決方案是拷貝libtiger.so到絕對目錄 /lib 下(但是,要是超級用戶才可以,因此要使用sudo哦,親)。就可以生成可執行程序了

b.第二種方法是:將動態鏈接庫的目錄放到程序搜索路徑中,可以將庫的路徑加到環境變數LD_LIBRARY_PATH中實現:

export LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH

⑸ qt 怎樣生成動態庫

pro文件里將 TEMPLATE = app 改為TEMPLATE = lib

⑹ QT程序怎麼調用vc,編譯的靜態庫,動態庫等

mingw編譯出來的靜態庫後綴名為.a,編譯出來的動態庫的導入庫後綴名為.dll.a,而在windows下後綴名為.lib的庫可能是靜態庫也可能是動態庫的導入庫。 mingw編譯出來的動態庫的導入庫可以直接在vc中直接使用

⑺ 如何用qt在linux中編寫並使用動態鏈接庫

先寫好實現動態鏈接庫的libmy.cpp文件和libmy.h文件,如下:

// libmy.cpp

#include"libmy.h"

#include<iostream>

using namespace std;
MyLib::MyLib()
{
}

MyLib::~MyLib()
{
}

void MyLib::hello()
{
cout << "hello world~!" << endl;
}

// libmy.h文件

#ifndef LIBMY_H
#define LIBMY_H
class MyLib

{
public:
MyLib();
~MyLib();
void hello();
};
#endif /*LIBMY_H*/

然後寫好pro文件,如下:

TEMPLATE = lib
TARGET =DllTest

HEADERS += libmy.h
SOURCES += libmy.cpp

保存關閉,文件名命名為MyDll.pro
在Shell里執行qmake MyDll.pro,在沒有錯誤的情況下,然後執行make ,可以看到生成了幾個後綴名為so的文件,如下圖:

⑻ 為什麼動態編譯Qt庫需要Perl環境

您最初的想法是正確的,x86平台的庫放在電腦上即可。

而通過arm-linux-交叉編譯工具鏈編譯過的庫,是需要放在
開發板的文件系統裡面的,通用的做法一般是放在/lib或者/usr/lib
目錄裡面即可。或者也可放在其他目錄中,但是需要配置一下LD_LIBRARY_PATH
環境變數。例如放在/home/qtlib目錄中,由於這個不是系統默認的動態庫目錄,

需要設置環境變數LD_LIBRARY_PATH,在/etc/profile下面添加:
export LD_LIBRARY_PATH=/home/qtlib:$LD_LIBRARY_PATH

⑼ Qt下如何編譯庫

akefile文件。一般是qt里自帶的qmake工具。

首先先寫好cpp和頭文件,在當前目錄下依次執行qmake -project,qmake,make即可編譯。
另外,團IDC網上有許多產品團購,便宜有口碑

熱點內容
android學習源碼 發布:2025-01-11 11:26:23 瀏覽:411
伺服器都壞了如何恢復 發布:2025-01-11 11:24:04 瀏覽:352
微博緩存的圖片能清理嗎 發布:2025-01-11 11:01:49 瀏覽:306
文字加密器 發布:2025-01-11 11:01:08 瀏覽:453
vc60非靜態編譯 發布:2025-01-11 10:51:32 瀏覽:614
電腦上怎麼解壓縮文件 發布:2025-01-11 10:51:31 瀏覽:783
槍戰王者如何用賬號密碼登錄 發布:2025-01-11 10:30:56 瀏覽:938
mysql在linux下安裝 發布:2025-01-11 10:30:49 瀏覽:845
資料庫copy 發布:2025-01-11 10:26:06 瀏覽:534
unity清理緩存 發布:2025-01-11 10:25:23 瀏覽:468