當前位置:首頁 » 編程軟體 » 海思編譯qt5

海思編譯qt5

發布時間: 2022-11-25 12:05:54

『壹』 Qt5 在linux 下的編譯,該怎麼處理

[[email protected] testQT]$ make
g++ -o testQT main.o -L/opt/Qt5.1.1/5.1.1/gcc_64/lib -lqt-mt -lXext -lX11 -lm
main.o: In function `main':
/home/wanglj/testQT/main.cpp:6: undefined reference to `QApplication::QApplication(int&, char**, int)'
main.o: In function `QString':
/usr/include/QtCore/qstring.h:413: undefined reference to `QString::fromAscii_helper(char const*, int)'
main.o: In function `main':
/home/wanglj/testQT/main.cpp:7: undefined reference to `QLabel::QLabel(QString const&, QWidget*, QFlags<Qt::WindowType>)'
main.o: In function `~QString':
/usr/include/QtCore/qstring.h:869: undefined reference to `QString::free(QString::Data*)'
/usr/include/QtCore/qstring.h:869: undefined reference to `QString::free(QString::Data*)'
collect2: ld 返回 1
make: *** [testQT] 錯誤 1

但若直接用 qtcreator 打開編譯,則無錯誤
並且find -name libqt-mt* 也找不到其他版本的該文件

用qtcreator編譯好的可執行文件,也找不到連接該lib文件

[[email protected] build-testQT-桌面-Debug]$ ldd testQT
linux-vdso.so.1 => (0x00007fff4ddff000)
libQtGui.so.4 => /usr/lib64/libQtGui.so.4 (0x000000397f000000)
libQtCore.so.4 => /usr/lib64/libQtCore.so.4 (0x000000397ea00000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003978600000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007fda6a081000)
libm.so.6 => /lib64/libm.so.6 (0x0000003977a00000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000003983a00000)
libc.so.6 => /lib64/libc.so.6 (0x0000003977e00000)
libgthread-2.0.so.0 => /lib64/libgthread-2.0.so.0 (0x000000397a600000)
librt.so.1 => /lib64/librt.so.1 (0x0000003978e00000)
libglib-2.0.so.0 => /lib64/libglib-2.0.so.0 (0x0000003979200000)
libpng12.so.0 => /usr/lib64/libpng12.so.0 (0x000000397be00000)
libz.so.1 => /lib64/libz.so.1 (0x0000003978a00000)
libfreetype.so.6 => /usr/lib64/libfreetype.so.6 (0x000000397ba00000)
libgobject-2.0.so.0 => /lib64/libgobject-2.0.so.0 (0x0000003979e00000)
libSM.so.6 => /usr/lib64/libSM.so.6 (0x0000003985a00000)
libICE.so.6 => /usr/lib64/libICE.so.6 (0x0000003984e00000)
libXi.so.6 => /usr/lib64/libXi.so.6 (0x000000397ce00000)
libXrender.so.1 => /usr/lib64/libXrender.so.1 (0x000000397d600000)
libXrandr.so.2 => /usr/lib64/libXrandr.so.2 (0x000000397de00000)
libXfixes.so.3 => /usr/lib64/libXfixes.so.3 (0x000000397da00000)
libXcursor.so.1 => /usr/lib64/libXcursor.so.1 (0x000000397e200000)
libXinerama.so.1 => /usr/lib64/libXinerama.so.1 (0x000000397e600000)
libfontconfig.so.1 => /usr/lib64/libfontconfig.so.1 (0x000000397d200000)
libXext.so.6 => /usr/lib64/libXext.so.6 (0x000000397c600000)
libX11.so.6 => /usr/lib64/libX11.so.6 (0x000000397b600000)
libdl.so.2 => /lib64/libdl.so.2 (0x0000003978200000)
/lib64/ld-linux-x86-64.so.2 (0x0000003977600000)
libuuid.so.1 => /lib64/libuuid.so.1 (0x0000003983600000)
libexpat.so.1 => /lib64/libexpat.so.1 (0x000000397c200000)
libxcb.so.1 => /usr/lib64/libxcb.so.1 (0x000000397ae00000)
libXau.so.6 => /usr/lib64/libXau.so.6 (0x000000397aa00000)

------解決方案--------------------
INCPATH = -I/usr/lib64/qt-3.3/mkspecs/default -I. -I. -I$(QTDIR)/include
這一行看上去你調用的qmake不是5.1.1的。試試指定完整路徑運行qmake
/opt/Qt5.1.1/5.1.1/gcc_64/bin/qmake testQT.pro

『貳』 Qt4升級到Qt5需要乾的那些事(CMake)

1.把CMakeList.txt裡面的find_package(qt4 required)替換成了find_package(Qt5Widgets)

如果你的Cmake報錯:
CMake Error at C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Moles/FindQt4.cmake:664 (message):
Could NOT find QtCore.
Check D:/chen/CMakeFiles/CMakeError.log for more details.
參考: Detecting Qt5 with CMake

2.刪去INCLUDE(${QT_USE_FILE})
將TARGET_LINK_LIBRARIES後面括弧裡面的${QT_LIBRARIES}刪去
將target_link_libraries simpleTree Qt5::Widgets加入到addLibrary後面(其中simpleTree是你要編譯的項目名字,在CMakeList裡面找一下,出現了很多次)

如果你的CMake報錯:
CMake Error at CMakeLists.txt:36 (INCLUDE):
include called with wrong number of arguments. Include only takes one
file.
參考:
Cmake and QT5 - Include only takes one argument
Implementing Qt project through CMake

3.QT4_WRAP_CPP(HEADERS_MOC ${INCLUDE_FILES})
QT4_WRAP_UI(FORMS_HEADERS ${FORMS})
QT4_ADD_RESOURCES(RESOURCES_RCC ${RESOURCES})
裡面的4都改成5

如果你的CMake報錯:
Unknown CMake command "QT4_WRAP_CPP".

4、把*.cmake文件裡面的FIND_PACKAGE(Qt4 COMPONENTS QtCore QtXml QtOpenGL QtGui)替換成
FIND_PACKAGE(Qt5 QUIET COMPONENTS Core Xml OpenGL Gui Widgets)

這里還是報錯findqt4有問題。

參考:
Autodetect and use Qt4 or Qt5

『叄』 怎麼在命令行下用g++ 編譯 QT5

那個是軟體的輸出窗口,我沒用過MINgw,但你可以看看那個軟體的設置菜單,把輸出窗口關閉就可以了.編譯時要加一個選項: -mwindows ,例如: gcc -mwindows -o test.exe main.c 或者 g++ -mwindows -o test.exe main.cpp .

『肆』 cmake + Qt 5 編譯出錯,請幫忙看看怎麼解決

Qt在編譯時,需要首先使用uic.exe編譯UI文件,通過moc.exe處理Q_OBJECT之類的宏,當然你可以去掉這些定義,否則就需要加上:

# COMPILE UIs
SET(UIS
mnwindow
)

FOREACH (ui_file ${UIS})
SET(TMP_IN "${PROJECT_SOURCE_DIR}/res/${ui_file}.ui")
SET(TMP_OUT "${PROJECT_BINARY_DIR}/ui_${ui_file}.h")
EXECUTE_PROCESS(COMMAND ${QT_FOLDER}/bin/uic.exe -o ${TMP_OUT} ${TMP_IN})
MESSAGE(STATUS "EXEC=${QT_FOLDER}/bin/uic.exe -o ${PROJECT_BINARY_DIR}/ui_${ui_file}.h ${PROJECT_SOURCE_DIR}/res/${ui_file}.ui")
ENDFOREACH(ui_file)

# CREATE MOC
SET(HEADERS
mainwindow
)

FOREACH (header_file ${HEADERS})
SET(TMP_IN "${PROJECT_SOURCE_DIR}/inc/${header_file}.h")
SET(TMP_OUT "${PROJECT_BINARY_DIR}/moc_${header_file}.cpp")
EXECUTE_PROCESS(COMMAND ${QT_FOLDER}/bin/moc.exe -o ${TMP_OUT} ${TMP_IN})
SET(MOCS ${MOCS} ${PROJECT_BINARY_DIR}/moc_${header_file}.cpp)
MESSAGE(STATUS "EXEC=${QT_FOLDER}/bin/moc.exe -o ${PROJECT_BINARY_DIR}/moc_${header_file}.cpp ${PROJECT_SOURCE_DIR}/inc/${header_file}.h")
ENDFOREACH(header_file)

free c#.net qr creator
這里要注意的是:EXECUTE_PROCESS在COMMAND後面不能加引號,命令直接寫,否則執行的程序也不會出錯,但也不會正常運行.

『伍』 Qt5,QtAV使用,調試時,fatal error LNK1104: 無法打開文件「Qt5AVWidgetsd.lib」,怎麼解決

這段時間需要用QT開發一個播放直播流的功能,能夠播放各種格式的直播流,並且CPU佔用率不要太高(可以佔用GPU),這些是我們的目標。

直播流推流的技術進展在上一篇博客中已經提到了,目前我的能力范圍內只能推送RTMP格式的鏈接,所以需要播放端能夠解析這種格式的鏈接。

下面是一張自己做的圖,對QT可調用的幾種播放方面的開源庫進行對比:

打開build-QtAV-Desktop_Qt_5_7_1_MSVC2015_64bit-Debug文件夾,這個文件夾是和git clone之後的那個目錄同級的,

找到sdk_install.bat,這個腳本能夠自動將相應的DLL文件復制到正確的位置,可以看一下代碼,很容易理解:

View Code

此時就可以使用所有QT-AV的例子了,也可以創造自己的新工程並調用它。

注意:在DEBUG模式下編譯的QT-AV只能讓同樣在DEBUG模式下編譯的工程使用,

如果你想要使用windeployqt來打包你的程序(即生成綠色無安裝版本程序),需要將QT-AV和你自己的工程都在QT Creator的release模式下進行編譯。

更多關於使用windeployqt來打包程序的細節不在此贅述。我已經將自己打包的一個程序發布在了GITHUB上,可以參考一下:https://github.com/xuanli/qt-av-stream-player

切換當前目錄到如下位置:

QtAVexamplessimpleplayer

點擊打開simpleplayer_sdk.pro來在QT Creator中打開這個工程,不要打開simpleplayer.pro;

然後找到playerwindow.cpp,將68行進行如下修改,即可打開指定直播流鏈接(任意ffmpeg支持的格式,RTMP也支持),而非從本地載入一個視頻

1 // QString file = QFileDialog::getOpenFileName(0, tr("Open a video")); 2 QString file = "rtmp://live.hkstv.hk.lxdns.com/live/hks";

再編譯-運行,點擊open即可打開香港位置的這個RTMP格式的直播流

相應的源代碼和綠色版程序已經放在了我的倉庫里:https://github.com/xuanli/qt-av-stream-player

Qt-AV其實已經完成了FQFlib所要開發的對RTMP和RSTP格式直播流播放的支持,而且根據目前的實際測試其並不能播放RTMP(也可能是我自己沒寫好)

但是在已經有輪子的情況下,不太建議FQFlib的作者繼續重新造輪子

RTMP測試源:rtmp://live.hkstv.hk.lxdns.com/live/hks

RTSP測試源:rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov

HTTP和RTMP是直播流鏈接的格式,而直播流本身也有編碼格式和封裝格式。編碼格式如h.264格式(也叫MPEG-4)等;封裝格式則為MP4、WMV、FLV等。具體可以在推流時使用不同的ffmpeg參數進行設置。

H.264的維基網路介紹:

H.264,又稱為MPEG-4第10部分,高級視頻編碼(英語:MPEG-4 Part 10, Advanced Video Coding,縮寫為MPEG-4 AVC)是一種面向塊,基於運動補償的視頻編碼標准(英語:Video_coding_format) 。

MP4和MPEG4並不同:參考自:Difference between MPEG4 and MP4

綜合來說,Qt-AV給我留下的印象最好,其經過了6個年頭的發展,也有了多次的版本迭代,已經較為完善。

如果您想要使用QT開發功能強大,支持播放「格式」眾多且代碼簡單的播放器,非常推薦使用Qt-AV

『陸』 怎樣VS2013下安裝Qt5的插件

1、下載安裝qt 2、安裝完成後打開VS2013,可以看到菜單欄上多出了一個「QT5」選項。 3、單擊上圖紅色標框中的「Qt options」,並在下圖中配置其環境變數。 變數名:VS2013_QT 路徑:F:\Qt\Qt5.3.0\5.3\msvc2013_64_opengl(QT5的安裝目錄) 4、完成目上步操作後即可在VS2013中新建QT項目,例如新建「QTEST」。 當編譯時會出現如下錯誤: Qt5Widgetsd.lib(Qt5Widgetsd.dll) : fatal error LNK1112: 模塊計算機類型「x64」與目標計算機類型「X86」沖突 5、右擊QTEST項目,選擇「屬性」---「鏈接器」--「高級」---「目標計算機」,更改目標計算機為MachineX64 (/MACHINE:X64),並把平台改成「活動(x64)」。 接下來繼續配置QT5插件,單擊下圖中的QT工程設置把版本改為VS2013_QT5 再次編譯即可成功運行。

『柒』 Qt5怎麼知道我用的那個編譯器

左邊kit裡面有選擇,然後就是編輯界面,左邊有個工程工具。點擊後進去就可以看出你選擇的是哪一個了。

熱點內容
監控腳本實用 發布:2022-11-30 14:14:28 瀏覽:378
九陰真經顯血腳本 發布:2022-11-30 14:14:22 瀏覽:197
浪潮伺服器mgn口地址 發布:2022-11-30 14:13:41 瀏覽:822
linux鎖屏設置 發布:2022-11-30 14:08:20 瀏覽:897
演算法轉讓 發布:2022-11-30 14:07:24 瀏覽:26
我的世界為什麼從伺服器斷開連接 發布:2022-11-30 14:07:04 瀏覽:440
怎麼擠出母乳存儲袋中的空氣 發布:2022-11-30 14:05:32 瀏覽:33
linuxbin文件 發布:2022-11-30 14:01:19 瀏覽:483
購物網站源碼php 發布:2022-11-30 13:58:15 瀏覽:475
python執行java 發布:2022-11-30 13:56:23 瀏覽:943