簡體   English   中英

我如何創建一個使用開源C項目的C ++控制台應用程序

[英]How can I create a c++ console application which makes use of an open source c project

我一直在玩https://github.com/FFmpeg/FFmpeg的編譯版本。 但是,在使用avio_close關閉打開的流期間,它存在一些問題(關閉它需要很長時間)。

我一直在嘗試通過閱讀實現來理解可能出了什么問題,但卻找不到任何東西。

我想做的是實際上有一個使用c文件的C ++控制台應用程序,並在運行代碼時調試它們(使用斷點等)。

不幸的是,我找不到有關如何進行設置的任何信息。 僅在新的控制台應用程序中復制文件是不夠的。

在此先感謝您的任何建議。

編輯:我已經可以看到結束投票。 如果此問題不適合該網站,我將其刪除。 但是請指出正確的發布方向,盡管這是一個普遍的問題,但我認為它很清楚並且已經提供了足夠的信息。

Edit2:是的,我不清楚自己在使用什么。

我正在Windows 10上使用Visual Studio Community 2017創建C ++控制台應用程序。

編輯3:

我在使用DLL的控制台應用程序中使用源文件所采取的步驟。

  1. 將FFmpeg-master的所有內容復制到我的控制台應用程序
  2. 將所有這些都包括在c ++控制台應用程序項目中
  3. 運行構建-花費很長時間並且有無限的構建錯誤(> 1000)-可能與編譯器相關

編輯4:

我沒有avio_close實際錯誤,關閉流只是花費太長時間。 我在進行這些設置時發現,設置了fifo_size參數后,關閉流的速度要快得多,具體取決於設置值的大小。 由於fifo_size與數據包大小有關,因此這fifo_size ,但我還沒有發現此大小在代碼中有影響。

fifo_size = units設置UDP接收循環緩沖區的大小,以188個字節的數據包數表示。 如果未指定,則默認為7 * 4096。

Edit5:我仍然沒有找到一種將開源ffmpeg項目編譯成libs,dll和pdbs的方法。 我是第一個需要此類文件的人(似乎不現實)嗎? 到目前為止,唯一能夠提供這些功能的工具是vcpkg 唯一的問題是它可以編譯3.3.3版本,而最新版本是4.0.2。

我試圖修改vcpkg\\ports\\ffmpeg\\portfile.cmake文件以包括ffmpeg的最新版本,但它沒有構建它。

還有其他建議嗎?

您需要使用一些工具和工作流程,才能使用調試器從源代碼調試應用程序。

首先,您需要知道如何構建應用程序。 通常可以通過運行以下命令來實現:

$ ./configure
$ make

由於要調試,因此必須設置一些編譯器標志,這些標志將指示編譯器生成調試信息,調試器將使用這些信息將機器指令與相關的源代碼行相關聯。 在FFmpeg的情況下,你只需要配置commad更改為:

$ ./configure --enable-debug

請看一下$ configure --help來查看所有選項, configure在該項目中有很好的記錄。

運行make之后,您將具有包含調試信息的可執行文件,然后您需要學習如何使用調試器。 gdb調試器是最常用的調試器,實際上是大多數GUI調試器的后端。 有關如何使用gdb的信息和教程很多,請在Google上搜索gdb tutorial然后選擇最容易理解的gdb tutorial

您將需要學習的最相關的任務是如何設置斷點,打印變量和堆棧跟蹤。

使用諸如純gdb之類的命令行界面進行調試具有一些優勢,但是即使是老派人士也必須承認GUI派上了用場。 因此,作為最后的建議,在您理解gdb工作流程並對其感到滿意之后,您可以搜索GUI調試器甚至是完整的IDE,這無疑會使您的生活變得更加輕松。

我最終使用了vcpkg

作為構建此特定程序包的指南(不知道它是否適用於其他開源項目)包:

1)下載vcpkg並按照README文件中的說明進行安裝

2)前往

.. \\ vcpkg \\ ports \\ ffmpeg \\

並編輯portfile.cmake文件。

默認情況下,vcpkg將構建ffmpeg的3.3.3版本,並使用

vcpkg_download_distfile(ARCHIVE
URLS "http://ffmpeg.org/releases/ffmpeg-3.3.3.tar.bz2"
FILENAME "ffmpeg-3.3.3.tar.bz2"
SHA512 1cc63bf73356f4e618c0d3572a216bdf5689f10deff56b4262f6d740b0bee5a4b3eac234f45fca3d4d2da77903a507b4fba725b76d2d2070f31b6dae9e7a2dab
)

更改為

vcpkg_download_distfile(ARCHIVE
    URLS "http://ffmpeg.org/releases/ffmpeg-4.0.2.tar.bz2"
    FILENAME "ffmpeg-4.0.2.tar.bz2"
    SHA512 92a3bedcd070df72b26dbe3ebf4a3faea0a02289fbefdb6a6c73d65801cf60a7e11cd832d29ab46b7749a1ffd0a31505cf75bb46bd01ea06423b454ca04e9b7b
)

這將下載最新的ffmpeg版本。 為了使構建正常工作,您還必須注釋以下行:

if("ffserver" IN_LIST FEATURES)
    set(OPTIONS "${OPTIONS} --enable-ffserver")
else()
    set(OPTIONS "${OPTIONS} --disable-ffserver")
endif()

我認為自版本3.3.3起,此選項已被刪除/禁用,並且不再起作用。

3)運行(需要一段時間)

。\\ vcpkg安裝ffmpeg

您現在應該有了FFMPEG的4.0.2調試和發行版本,其中包含DLL,PDB,lib和包含文件夾。

不能完全確定此過程是否正確,但是我的項目運行正常,現在可以對其進行調試。

您可以使用來自github的開源打包程序vcpkg來構建許多開源項目,包括ffmpeg,而不會遇到任何麻煩。 vcpkg最近也提供了對非Windows平台的支持,請查看。

僅需要在Powershell提示符下輸入一個襯板命令即可.\\vcpkg install ffmpeg 與往常一樣,vs控制台項目也可以進行調試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM