當前位置:首頁 » 編程軟體 » qt靜態編譯dll

qt靜態編譯dll

發布時間: 2022-05-16 14:45:53

Ⅰ QT編譯mysql驅動為啥沒有qsqlmysqld4.dll這個文件產生壓根就不產生.dll文件就產生了一個.a文件

首先把你工程目錄下的所有makefile 、makefilerelease 、.pro.user等之前的編譯數據刪除掉
打開你的.pro文件,找到這樣一句:
TEMPLATE = ...
把他改成:
TEMPLATE = lib
再重新編譯試試

Ⅱ 用configure.exe 把 QT 編譯成靜態庫後 就不能生成 DLL了,只能生成 .a,是怎麼回事啊

重新改配置為shared。你既要靜態又要動態,不矛盾嗎,怎麼可能相容和工作。

Ⅲ 群內有人用mingw編譯的靜態編譯庫成功編譯過qt+mysql的程序嗎

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

mingw編譯出來的動態庫的導入庫可以直接在vc中直接使用,例如

#pragma comment(lib, "libx264.dll.a")

這樣你就不需要生成一個.lib後綴的動態庫的導入庫了,網上也有如何從.dll生成.lib的方法。

如果鏈接了動態庫的導入庫libpthread.dll.a,你發布的應用程序就要帶上pthread的dll。
使用靜態庫的好處是發布的應用程序組件模塊里不需要帶上相關的dll,如果要使用mingw編譯出來的靜態庫,可以如下:

#pragma comment(lib, "libx264.a")

但是僅僅鏈接這么一個靜態庫是不夠的,你還需要鏈接

libgcc.a

libmingwex.a

你可能還需要鏈接libmsvcrt.a

否則會報一堆錯誤:error LNK2001: 無法解析的外部符號

上面的這些庫在C:\MinGW\lib目錄或子目錄下面可以找到。

鏈接這些庫的原因是mingw使用的gcc編譯器和vc編譯器之間存在差異

Ⅳ Qt靜態調用dll為什麼不成功呢

undefinedreferenceto'myQtAdd(int,int)'錯誤。
LIBS+=-LC:/Users/Administrator/Desktop/qtDll/-IaddDll這個-I應該是-l不行,我改成-l還是那個錯誤
直接寫成LIBS+=C:/Users/Administrator/Desktop/qtDll/ADD.DLL看看
你的庫中有這個方法嗎?而且我看你的.h文件也沒加到工程文件裡面來啊。
有這個方法,動態調用成功了。
我把頭文件加進工程
QT+=coregui
LIBS+=C:/Users/Administrator/Desktop/qtDll/addDll.lib
TARGET=qtDll
CONFIG+=console
CONFIG-=app_bundle
TEMPLATE=app
SOURCES+=main.cppHEADERS+=\addDll.h
對了,我用VC6創建的dll,是個動態鏈接庫,把頭文件和lib,dll放在工程目錄,又把dll也放在了debug目錄,不知道是不是放錯了。
dll放錯位置,只是會讓你運行不了,編譯是不會報錯的。你那個庫能行么?你用VC調用看看。或者你用Qt創建個動態庫,試試能不能行。
#include<iostream
#include"addDll.h"

Ⅳ 求Qt5.10 for msvc2015 mysql靜態編譯版本的驅動

樓主可以通過查看依賴庫的軟體(比如windows depends)把所有依賴的DLL都打包起來
和你的EXE一起拷貝到別的電腦上就能直接跑 了

Ⅵ Qt Creator 怎樣設置才能實現靜態編譯

Qt默認的編譯方式是動態編譯的,但是有時候你編寫的程序要發布出去,帶很多動態庫文件是很繁瑣的,此時就需要靜態編譯你的程序,Qt要實現靜態編譯必須庫文件也是靜態編譯的,可以用這個命令編譯靜態庫:

1.將C:\Qt\2010.05\qt\mkspecs\win32-g++文件中的QMAKE_LFLAGS = -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc

改為

QMAKE_LFLAGS = -static -enable-stdcall-fixup -Wl,-enable-

auto-import -Wl,-enable-runtime-pseudo-reloc

2.在開始菜單里找到Qt Command Prompt並運行,輸入命令: configure -static -debug-and-release -no-exceptions -L "C:\Qt\2010.05\qt\include" -L "C:\Qt\2010.05\qt\lib"

-L指定一下路徑,防止用到vc的頭文件

選擇開源:O;選擇license:y;

3.上一條命令運行成功後再輸入命令: mingw32-make sub-src

等1 ~3 小時可能就運行完了 完成後就ok了。。。

Ⅶ qt靜態編譯後怎樣打包exe文件

一般我都是用動態編譯,把需要的dll和exe放到一個文件夾下就可以。你靜態編譯後應該就能直接打開exe使用。如果不能運行,根據提示,找到對應的系統dll放到一起試試。 你先試一下有問題可以 追問

Ⅷ Qt Creator怎麼靜態編譯C++程序

如果你說的是Qt程序的話,靜態編譯就得自行從源碼開始編譯Qt靜態庫,官網預編譯的版本是不包含靜態庫的。這個很復雜,請參考qt-everywhere-opensource 中提供的編譯幫助。注意如果使用miongw的話,gcc版本最好不要是4.6.2。這個版本比較特殊,但是它是mingw官方版的最新打包版本。
如果你說的是非qt庫依賴的話,有兩種mingw和vs,前者有部分發行版默認去除了dll依賴,直接連接的靜態庫,後者非常不推薦使用靜態庫,畢竟它載入的是系統常用dll,基本上所有系統都是推薦安裝的運行時環境,用靜態庫吃力不討好。

Ⅸ 你好,我現在用qt中要使用了一個vs2010編譯的.lib靜態庫。

對於C語言而言,用於連接dll的連接lib是可以通用的,dll也是可以通用的。但是靜態庫目前而言並不是通用的,一般的處理方式是編譯成dll,然後生成連接lib(a)庫,引入項目,或者使用libtdl動態載入dll文件。
靜態庫不可通用的原因是,基礎庫相差太多,objmp甚至都無法識別使用vc默認選項編譯出啦的obj文件格式。另外reimp不是用於這個用途的,是為dll的連接lib(a)文件提供轉換的。

對於C++而言,所有二進制代碼都是不可通用的,畢竟名稱修飾都相差甚遠。

Ⅹ Qt 如何編譯成可執行程序,像VC的靜態編譯,可以在脫離QT的環境中運行

qt
如何編譯成可執行程序,像vc的靜態編譯,可以在脫離qt...
開源版本
不允許靜態編譯
可以將dll打包,就能再其他的機器上運行了.
榵彨廀峓朢桸潂椺壱檢挰洏煠愝噐

熱點內容
網頁無法緩存視頻 發布:2024-04-19 16:56:44 瀏覽:614
演算法紅 發布:2024-04-19 16:44:42 瀏覽:624
海量數據存儲與處理 發布:2024-04-19 16:33:46 瀏覽:541
微信聊天記錄怎麼恢復安卓手機 發布:2024-04-19 16:33:24 瀏覽:810
我的世界正版好玩的pvp伺服器 發布:2024-04-19 16:28:38 瀏覽:17
光遇安卓渠道服怎麼更換實名認證 發布:2024-04-19 16:18:08 瀏覽:263
關閉ip訪問 發布:2024-04-19 15:59:18 瀏覽:730
大屏安卓系統哪個好 發布:2024-04-19 15:49:10 瀏覽:792
解壓瀏覽器 發布:2024-04-19 15:39:22 瀏覽:575
pythonutfgbk 發布:2024-04-19 15:32:20 瀏覽:221