當前位置:首頁 » 編程軟體 » VsQt編譯成功運行出錯

VsQt編譯成功運行出錯

發布時間: 2022-07-27 00:06:28

Ⅰ QT5.5 for vs2010,包含5.5的庫目錄QTWidgets、QTCORE、QTGUI。為什麼編譯會出現qt庫錯誤求解決方案

qt5.0.2forwindows32bit(mingw4.7)是使用mingw32環境+gcc4.7編譯而成的二進制動態鏈接庫版本。qt5.0.2forwindows32bit(vs2010)是使用VS2010的配置和windowssdk7.0所提供的編譯工具生成的用於VS2010的版本。其中mingw4.7版本自帶了編譯器。而vs2010版本必須要安裝VS2010才能使用。其實沒有vs只安裝windowssdk也可以,不過需要一個代替vs2010的配置工具集。你C++什麼水平啊?如果不是新手的話我建議你去檢查一下配置項,就是qtcreator的編譯環境配置是否把qt路徑配置進去了。如果你是新手,我暫時勸你放棄qt,沒有足夠的C++功底,想用Qt很困難的。

Ⅱ Qt+VS程序運行錯誤問題

我猜你一定是拷貝的別人的工程。

最有可能就是 自定義生成工具里的QT生成工具是寫死的。

右鍵單擊ui文件,打開屬性 找到自定義生成工具-》常規-》命令行看看是否uic.exe是否在有小文件夾下。

自定義生成工具-》常規-》附加依賴項里的uic.exe 的路徑是否正確。

VS告訴你不在文件夾下,那麼最有可能該文件沒有生成。


Ⅲ VS2015 +QT生成exe文件,在XP運行時出現應用錯誤

1、你的ui文件是否存在字體大小為0的Widget?打開designer看一下,如果有的話需要將字體大小改成大於0的值;
2、代碼中是否調用了SetFontSize或SetFontSizeF這個函數,參數是否填寫成了0

Ⅳ 使用Qt靜態庫為什麼運行出錯

因為你鏈接的是qt的動態庫,在沒有qt動態庫的系統上肯定是運行不了的。有兩種方法,一種是靜態編譯,但會讓運行文件變大。第二種就是把動態庫和程序一起打包出去,路徑設置

把 main.cpp 改成下面這樣,再重新編譯項目就可以了:
#include <QApplication>
#include <QQmlApplicationEngine>
//1. add headers
#include <QtPlugin>
#include <QtQml>
//2. add Q_IMPORT_PLUGIN
#if defined(QT_STATIC) && !defined(Q_OS_MAC) && !defined(QT_NAMESPACE)
#include <QQmlExtensionPlugin>
Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin)
Q_IMPORT_PLUGIN(QtQuick2Plugin)
Q_IMPORT_PLUGIN(QtQuickControlsPlugin)
Q_IMPORT_PLUGIN(QtQuickLayoutsPlugin)
Q_IMPORT_PLUGIN(QtQuick2WindowPlugin)
#endif
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QQmlApplicationEngine engine;
//3. registerTypes
#if defined(QT_STATIC) && !defined(Q_OS_MAC) && !defined(QT_NAMESPACE)
qobject_cast<QQmlExtensionPlugin*>(qt_static_plugin_QtQuick2Plugin().instance())->registerTypes("QtQuick");
qobject_cast<QQmlExtensionPlugin*>(qt_static_plugin_QtQuickControlsPlugin().instance())->registerTypes("QtQuick.Controls");
qobject_cast<QQmlExtensionPlugin*>(qt_static_plugin_QtQuickControlsPlugin().instance())->registerTypes("QtQuick.Controls.Private");
qobject_cast<QQmlExtensionPlugin*>(qt_static_plugin_QtQuickControlsPlugin().instance())->registerTypes("QtQuick.Controls.Styles");
qobject_cast<QQmlExtensionPlugin*>(qt_static_plugin_QtQuickLayoutsPlugin().instance()) ->registerTypes("QtQuick.Layouts");
qobject_cast<QQmlExtensionPlugin*>(qt_static_plugin_QtQuick2WindowPlugin().instance()) ->registerTypes("QtQuick.Window.2");
qobject_cast<QQmlExtensionPlugin*>(qt_static_plugin_QtQuick2Plugin().instance()) ->initializeEngine( &engine, "QtQuick");
qobject_cast<QQmlExtensionPlugin*>(qt_static_plugin_QtQuickControlsPlugin().instance())->initializeEngine( &engine, "QtQuick.Controls");
qobject_cast<QQmlExtensionPlugin*>(qt_static_plugin_QtQuickLayoutsPlugin().instance()) ->initializeEngine( &engine, "QtQuick.Layouts");
qobject_cast<QQmlExtensionPlugin*>(qt_static_plugin_QtQuickLayoutsPlugin().instance()) ->initializeEngine( &engine, "QtQuick.Layouts");
qobject_cast<QQmlExtensionPlugin*>(qt_static_plugin_QtQuick2WindowPlugin().instance()) ->initializeEngine( &engine, "QtQuick.Window.2");
#endif
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
return app.exec();
}

Ⅳ qt編譯後運行錯誤 出現應用程序無法正常啟動(0Xc0150002).請單擊「確定」關閉應用程序.

代碼有問題

Ⅵ vs2010編譯QT4.8.6,designer.exe、assistant.exe無法運行

認真核對操作步驟:
1、修改環境變數工具推薦:Rapid Environment Editor。
修改前請先備份當前的環境變數。然後:
(1)檢查系統變數path,刪除有關mingw其他版本等信息,以免與後續的mingw32-make沖突。
(2)檢查用戶變數INCLUDE、LIB、PATH、MSDevDir和MSVCDir,刪除有關\Microsoft Visual Studio\VC98的信息,因為它們會與後續的mingw32-make沖突,導致編譯出錯。
2、在電腦上安裝mingw編譯器,假設路徑安裝在C:\Qt\mingw32。將C:\Qt\mingw32\bin添加進環境變數path,打開DOS命令行輸入gcc --version和g++ --version和mingw32-make --version驗證編譯器安裝成功。我用的MinGW版本是V4.8.2,
3、解壓qt-everywhere-opensource-src-4.8.6.zip並進入目錄。例如:D:\qt-everywhere-opensource-src-4.8.6\
4、依次執行以下DOS命令:
(1)configure -debug-and-release -opensource -prefix "D:\Qt4.8.6" -platform win32-g++ -nomake demos -nomake examples
常見的使用選項說明:
-debug-and-release 編譯debug和release版
-opensource 選擇開源協議並確認
-platform win32-g++ 使用mingw編譯
-prefix "D:\Qt4.8.6" 指定編譯結果目錄,如果未指定則默認當前
-shared 創建和使用共享Qt庫
-static 創建和使用靜態Qt庫
-nomake demos -nomake examples 不編譯常式
-nomake tests 不編譯tests

-skip qtwebkit 忽略qtwebkit,因為編譯它特別消耗時間

-mp 使用多核優化編譯

(2)mingw32-make
(3)mingw32-make install
5、編譯完成後,把C:\Qt\mingw32\bin\路徑下的三個文件libgcc_s_dw2-1.dll、libstdc++-6.dll和libwinpthread-1.dll拷貝到D:\qt-everywhere-opensource-src-4.8.6\bin\。另外,也請把步驟1備份的環境變數還原。
6、修改Qt安裝路徑
最初編譯時選擇的路徑是D:\Qt4.8.6\。如果想將它復制到其他盤符,並且改名,例如:C:\Qt\4.8.6_MinGW。這樣一來會有問題嗎?是的,會有問題,因為Qt有絕對路徑依賴症。改名後C:\Qt\4.8.6_MinGW\bin\的exe執行程序都會出問題,要麼程序打不開,要麼多國語言發生異常。用記事本打開C:\Qt\4.8.6_MinGW\bin\qmake.exe,查找關鍵字「qt_prfxpath」,可以看到裡面含有原始的安裝路徑。我們不可以手動去修改qmake.exe,真正有效的解決方法是:
在C:\Qt\4.8.6_MinGW\bin\路徑下創建一個qt.conf文件,內容為
[paths]
Prefix = C:/Qt/4.8.6_MinGW

請注意:qt.conf文件必須是ANSI格式,並且Prefix的斜杠風格採取的是Linux的,而非Windows,否則會失效。或者使用"Prefix = .. ",如此一來,任意路徑有效。

Ⅶ VS里正常的代碼在QT里執行有問題要怎麼弄好QT的

在安裝 QT+MSVC環境的時候,該出的問題我想都讓我碰上了。

  • 問題1 :jom.exe 崩潰,構建不通過。

    jom: ......... Error 219:19:11: 進程"E:QT1ToolsQtCreatorinjom.exe"退出,退出代碼 2 。Error while building/deploying project untitled (kit: Desktop Qt 5.5.1 MSVC2015 64bit)When executing step "Make"

    這個我沒有出現什麼cl不是內部命令的提示,至於使用nmake就更錯了,nmake運行就出問題,估計是安裝時nmake就有問題了。所以不是環境變數之類的錯誤,由於我前期先安裝的QT+MinGW,後來需要MSVC才安裝的vs2015,估計是這個安裝先後順序導致一些配置不對,反正我的kit配置都沒有錯誤提示了也不行,乾脆直接全卸了重新來。這次OK了,msvc,mingw都能用了。後來看到有初始化msvc編譯環境的腳本,如果不行就先使用下試試,沒准就OK了,不用浪費時間重新安裝(安裝時間好長呀)

  • 1

  • 問題2 -1: error: LNK2019: 無法解析的外部符號 **,該符號在函數 ** 中被引用,看圖說話。

    無法解析的外部符號說明,該函數的庫或頭文件沒有被引入,比如下面

    qmfcapp.obj : error LNK2019: 無法解析的外部符號 __imp_SetWindowsHookExW,該符號在函數 "public: static bool __cdecl QMfcApp::pluginInstance(void *)" (?pluginInstance@QMfcApp@@SA_NPEAX@Z) 中被引用

    在QT中找到QMfcApp::pluginInstance函數查看了下使用到外部函數的地方SetWindowsHookEx,點擊可以跳轉到頭文件WinUser.h,那就是庫沒有了。由於原來是MinGW,內部的庫都導入了,轉到MSVC後一些自帶的系統庫沒有加進來。網路查找SetWindowsHookEx該函數所需庫User32.lib,在電腦上搜了。然後在.pro工程文件中右鍵加入庫如下


    把加後綴的勾刪了,我這window下好像沒有專門的d版調試庫。
    OK。這時在庫里就自動加上了下面這幾行。

    unix|win32: LIBS += -L'C:/Program Files (x86)/Windows Kits/8.1/Lib/winv6.3/um/x64/' -lUser32INCLUDEPATH += 'C:/Program Files (x86)/Windows Kits/8.1/Lib/winv6.3/um/x64'DEPENDPATH += 'C:/Program Files (x86)/Windows Kits/8.1/Lib/winv6.3/um/x64'
  • 1

  • 2

  • 3

  • 4

  • 1

  • 問題3 User32.Lib:-1: warning: LNK4272:庫計算機類型「X86」與目標計算機類型「x64」沖突
    剛開始時找錯了庫,找到的是32位編譯出來的user32.lib庫,後來直接到系統盤window下找到了64位的就OK了。

  • 問題4 This application has requested the Runtime to terminate it in an unusual way

    這個在我安裝了vs2015就出現了這問題,沒裝時都好好的。這個上一篇有講到,這次又遇上了,我真的是無語了,也是莫名其妙的又不報了。具體怎麼弄好的我也摸不著,vs2015又裝了VC++里的所有部分(MFC類,兼容XP什麼的兩個,原本就一個VC++編譯器的),到qt安裝目錄里有個vcredist_msvc2015_x86運行,重啟後也一樣,然後還有什麼,重新拷貝庫?一堆事情,一個個試都不好,換vb,vs,突然之間就好了,可是VB來錯誤53,找不到dll了,vs來載入格式不正常,這個看問題5。但有一點可以肯定—-錯誤與下面的dll無關,這個是depends找不到有關的bug。

  • 問題5 試圖載入格式不正確的程序。 (異常來自 HRESULT:0x8007000B)

    這里是目標平台和庫不一致,需要注意下,用MinGW編譯的去MinGW版的QT庫里找對應的庫(debug版和release版),然後要注意的是它是32位的,所以vs里只能選擇X86平台。貌似沒有找到有64的MinGW版本的QT.
    而MSVC我下的是64的,所以只能選則X64平台。拷貝庫也是到msvc版的QT庫里找。如果庫位數不對,會呈粉紅色。

  • 問題6 其他信息: 無法載入 DLL「bstdll.dll」: 找不到指定的程序。 (異常來自 HRESULT:0x8007007F)。

    換成X86的拿mingw編譯出來的試出這問題,拿到在VB下就是 實時錯誤53:找不到DLL的意思了。這個估計就是跟安裝了vs2015的問題有關了。安裝了vs2015後VC++估計把我一些32位的庫給弄掉了,怎麼都無法成功了。嘗試下個msvc 32位的編譯看是否一樣。

  • 問題7 error: C2373: 「saveImage」: 重定義;不同的類型修飾符
    同樣的代碼用64的編譯器和MinGW都沒問題,換成32位的msvc就出問題了,
    .h文件

    extern "C" BSTDLLAPI void __stdcall saveImage(const char *file);

    .cpp文件

    void saveImage(const char *file){
    dev.savePicture(file);
    }

    平常看到的講解導出dll都沒要求實現里也要加上__stdcall,這里報錯就是這個原因,.cpp里也加個__stdcall就OK了。

  • 1

  • 2

  • 3

  • 1

  • 問題8 其他信息: 無法在 DLL「xxx.dll」中找到名為「xxx」的入口點。

    到這一部至少說明,dll可以被找到,目標平台和生成的dll也是一致的,只是入口函數找不到,可能是導出名不對了,depends查看下果然名字被過度修飾了。變成了_function@bytenum形式。
    怎麼解決我不知道msvc的編譯器有沒有這個選項,直接改成這個名字算了。

  • 問題9 發生了 PInvokeStackImbalance
    對PInvoke函數的調用導致堆棧不對稱。

    先看看是不是調用協議不對,vb是__stdcall,vc++默認用__cdecl,如果一致了還出錯,那可能是long要改成int32,這個嘗試改下就行了。我就是這么解決的。

  • 到此,無論是64還是32位都能用了。坑好多啊。MinGW版不知道為什麼就是錯誤提示找不到dll,裝了個VS2015麻煩這么多。有知道的大神可以解惑下。
    有些人說MinGW版編譯的dll不能在window下用是有問題的,反正我不裝VS2015時一切都好好的。如上篇所述,而且也在別人機子上試過。現在沒時間找這個問題了,能用就行了。

熱點內容
心跳包源碼 發布:2025-03-17 11:03:29 瀏覽:795
安卓蘋果通訊錄怎麼同步 發布:2025-03-17 09:58:12 瀏覽:173
ai緩存 發布:2025-03-17 09:48:27 瀏覽:921
翹嘴水滴輪什麼配置 發布:2025-03-17 09:47:34 瀏覽:582
小蟻攝像機如何雲存儲 發布:2025-03-17 09:42:42 瀏覽:817
如何修改自己的名字和密碼 發布:2025-03-17 09:32:20 瀏覽:788
寶馬3系槍灰色輪轂是哪個配置 發布:2025-03-17 09:28:17 瀏覽:514
鴻蒙系統退回安卓系統怎麼備份 發布:2025-03-17 09:14:33 瀏覽:615
資料庫服務公司 發布:2025-03-17 08:56:43 瀏覽:496
我的世界伺服器載入不了區塊 發布:2025-03-17 08:56:39 瀏覽:818