[TOC]
開始前的BB
終於要開始寫東西了呢
開始之前我們先把環境配置好,為了相容不同平臺的大佬能有相同的體驗,所以用Clion做為IDE,話不多說,開搞工程的建立
首先我們用Clion建立一個C++11的工程,然後在根目錄下簡歷以下幾個資料夾
include //存放引用的標頭檔案
librarys //存放所依賴的庫檔案
src //存放程式碼
video //存放測試視訊
複製程式碼
然後我們去下載的shared庫的bin裡
把dylib放入librarys/
下
然後去下載解壓後的dev包裡,將所有的標頭檔案,copy到include裡,如果現在一步步照著做的話,那麼專案的結構是這樣的
現在 我們來編寫Cmake(Cmake的語法抽空寫個部落格來講,這裡暫時就不講了,不懂的同學告訴你個好訊息,本專欄已經和百度達成了合作☺️)
cmake_minimum_required(VERSION 3.13)
project(LearnFFmpeg)
set(CMAKE_CXX_STANDARD 11)
set(SRC_DIR ./)
include_directories(include/)
link_directories(librarys/ffmpeg/)
set(SOURCE_FILES
main.cpp
)
add_executable(LearnFFmpeg
${SOURCE_FILES})
target_link_libraries(
LearnFFmpeg
avformat.58
avcodec.58
avdevice.58
avfilter.7
avutil.56
postproc.55
swresample.3
swscale.5
)
複製程式碼
在main.cpp
中
//
// Created by MirsFang on 2019-03-12.
//
#include <iostream>
extern "C"{
#include <libavformat/avformat.h>
}
using namespace std;
int main(){
int version =avformat_version();
cout<<"version:"<<version<<endl;
return 0;
}
複製程式碼
點選執行
如果看見
表明環境已經搭建成功可能會遇見的錯誤
這個說明你的動態庫沒有找到,一般來講去看Cmake裡面的link_directories
是否設定正確,本文的是link_directories(librarys/)
,對應根目錄librarys/
- symbol(s) not found for architecture x86_64
這個錯誤,大概率是直接這樣include
這個問題是缺少了extern "C"
,他的作用的主要作用就是為了能夠正確實現C++程式碼呼叫其他C語言程式碼(主要原因是因為C++支援函式過載,而C語言並不支援函式過載)所以把 extern "C"
加上
下一步我們就開始簡單的寫一點實用的東西
未完持續。。。