32位qt編譯的程序
㈠ 我是64位的系統,裝的32位的qt-opensource-windows-x86-msvc2015-5.8.0,
先裝visual studio2015,再裝qt-opensource-windows-x86-msvc2015,然後可以直接用qtcreator編輯Qt程序
出問題的exe名稱為TestApp.exe,在Visual Studio下編譯運行都正常,但無法直接點擊exe運行。報錯為(應用程序無法正常啟動(0xc000007b)。請單擊「確定」關閉應用程序)
本人環境:基於visual studio IDE下的QT編譯器,共有四種,在 qt-版本號 文件夾下。
我的問題解決步驟如下:
1.看準自己項目的編譯環境
我電腦雖然是64位的,但是編譯器環境是32位的,故之後所有都需要以32位為標准
由於是Visual Studio ,所以採用下面文件夾中的msvc2017環境進行編譯(沒有標注64位就是32位)
2.添加系統環境變數
打開控制面板搜索環境變數,對系統path進行更改
按照上一步的環境進行配置!!!不要添加冗餘路徑,一項即可!!
PS:多項也可以,但是要在IDE中選擇正確的default編譯器,不然系統會搞混64和32位的dll
3.進入qt自帶的命令行中
開始框中搜索 → 選擇合適的環境(比如我是MSVC 2017 32-bit)→ 進入目標exe程序所在文件夾
輸入命令
windeployqt xxx(目標exe名稱)
復制
PS:該命令(windeployqt)若添加了系統Path後,也可以直接在系統cmd中運行,前提是:環境Path只有適合自己項目的那一項!!(only 32 or 64) 否則系統會弄混。。。然後就又失敗鏈接了qaq
此時,在exe的文件夾下面會多出很多文件夾和dll文件,表明已經link成功
再次強調:不同位數的編譯器鏈接出來的dll不同!一定一定要適合自己的程序
㈢ 64位系統上裝32位的Qt,用來開發64位的程序,這樣可以嗎
基本類型在 64位系統和 32位系統不一樣,指令集也有區別。64位編譯的程序不能直接鏈接到32位的庫。鏈接庫的位必須兼容。64位鏈接32位,鏈接會失敗。必須安裝qt64bit。
㈣ qt-opensource-linux-x64-5.6.3.run有沒有對應的32位版本,官網上沒找到,有什麼辦法可以解決
建議用 5.5.1 ,功能差不了太多,要不就得自己在32位系統下從源碼編譯Qt了。
http://download.qt.io/archive/qt/5.5/5.5.1/
先確認必須在32位系統下使用的必要性。再看看5.6的新功能是否有必須用到的。
New Features in Qt 5.6
New Features
Qt Core
Reced memory usage of dynamic properties
Allow logging directly to syslog on Linux systems
Added QStorageInfo::blockSize()
new QVersionNumber class
Added key_iterator to QHash and QMap
Added const_iterator QByteArray
Added reverse iterator support to all sequential containers
added QDir::listSeparator()
Lots of performance optimisations in QString
Qt Network
Added QHostAddress::isMulticast()
Support HTTP redirection in QNetworkAccessManager
Qt GUI
Improved cross-platform OpenGL ES 3.0 and 3.1 support to help the development of mobile/embedded apps utilizing GLES3 features.
Improved cross-platform high-dpi support.
Raster engine support for rendering internally with 16bits-per-color.
QImageReader now exports gamma values and other meta data for some image formats
Qt Widgets
Allow programmatic resizing of dock widgets
Allow dropping dock widgets into floating docks
Allow the user to re-arrange tabified docks
Allow horizontal scrolling using a mouse wheel in QListView
QOpenGLWidget and QQuickWidget are now supported on WinRT
Qt Testlib
More stable input event handling
Qt Multimedia
New Playlist QML type.
New audio role API for the media player (C++ and QML)
Support for camera focus and video probe on WinRT
New functions in QML AudioEngine to support dynamic object creation
Qt WebEngine
Based on Chromium 45
Support for pepper plugins including Flash
Support for unbundling and linking with system libraries on Linux
Support for following global Qt proxy settings.
More WebActions from QtWebKit and WebAction API in QML.
New QtWebEngineCore mole for shared low-level API
New core API for custom URL schemes
New core API for intercepting and blocking network requests
New core API for tracking or blocking cookies.
Qt QML
Support for writing JavaScript function names to Linux's perf output
Reced overall memory consumption
Moved all the debug services into plugins. Custom debug services can be added width additional plugins.
Font rendering
Optional support for using FreeType on Mac OS X
Embedded platforms
Added support for NVIDIA Jetson TK1 Pro boards running Vibrante Linux via a new eglfs backend utilizing DRM, EGLDevice and EGLStream
Added support for Intel Atom-based NUCs
Desktop platforms
Windows 10 fully supported (classic and WinRT app)
Windows Store apps are now composited inside a XAML layer, allowing for better integration with the native UI layer
Windows embedded
Added support for WEC2013
Qt WebView
Added support for WinRT
Qt Canvas3D
Support for using Qt Quick items as textures
Support for rendering directly to Qt Quick scene background or foreground
Qt Nfc
Added support for Android
Qt Positioning
Added support for OS X
Added support for GPS receivers exposed as a serial port on Windows desktop (all versions)
Removed libgeoclue dependency for the GeoClue backend
Qt Location
Added the Qt Location mole providing maps, navigation and places APIs for Qt Quick
Embedded platforms
libinput, when present, is now the default for eglfs and linuxfb
Image Formats
For security reasons, the MNG and JPEG 2000 handlers will by default no longer be built, unless the corresponding codec libraries are provided by the OS. Hence, the binary Qt releases for Windows and Mac will not contain prebuilt handlers for those formats, but users can still build them from source.
Qt Script
Qt Enginio
Qt WebKit
Qt Declarative (Qt Quick 1)
Other Changes
Deprecated Moles
The following moles are part of Qt 5.6 release, but deprecated and considered for removal in subsequent releases of Qt:
Removed Moles
With Qt 5.6 the following moles are no longer part of the release packages, but users can still build them from source:
㈤ 高分求教,Qt如何載入調用win32程序編譯的DLL
Qt提供了一個 QLibrary 類供顯示調用。下面給出一個完整的例子:
testDLL.dll為自定義的dll文件,將其復制到程序的輸出目錄下就可以調用。
#include <QApplication>
#include <QLibrary>
#include <QDebug>
#include <QMessageBox>
typedef int (*Fun)(int,int); //定義函數指針,以備調用
int main(int argc,char **argv)
{
QApplication app(argc,argv);
QLibrary mylib("testDLL.dll"); //聲明所用到的dll文件
int result;
if (mylib.load()) //判斷是否正確載入
{
QMessageBox::information(NULL,"OK","DLL load is OK!");
Fun open=(Fun)mylib.resolve("add"); //援引 add() 函數
if (open) //是否成功連接上 add() 函數
{
QMessageBox::information(NULL,"OK","Link to Function is OK!");
result=open(5,6); //這里函數指針調用dll中的 add() 函數
qDebug()<<result;
}
else
QMessageBox::information(NULL,"NO","Linke to Function is not OK!!!!");
}
else
{
QMessageBox::information(NULL,"NO","DLL is not loaded!");
return 0; //載入失敗則退出
}
}
㈥ qt編譯的程序無法單獨運行提示連接不到libstdc++-6.dll
丟失動態鏈接庫的文件問題很常見,其實解決方法很簡單,就是補一個
周圍同事和朋友的電腦里去考一個到你自己機子上補上
如果沒有,就網上下載,推薦一個網站是腳本之家,這種很全,應該能找到
常用的DLL文件,其實騰訊電腦管家就能修復,電腦診所--軟體問題--丟失.Dll 文件--一鍵修復
不常用的,可以用這個工具dx修復工具3.0增強版