一步一步学习ffmpeg编程:一走进ffmpeg的大门

第一次在windows上编写ffmpeg程序,把遇到的问题记下来

1.  新建了一个win32的应用程序,选择了空项目

     写了int main(int argc, char** argv(){}后出现了

     error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCRTStartup 中被引用

     原因:c语言运行时找不到适当的程序入口函数,一般情况下,如果是windows程序,那么WinMain是入口函数,如果是dos控制台程序,那么main是入口函数,而如果入口函数指定不当,很显然c语言运行时找不到配合函数,它就会报告错误。

     解决方案:项目——> 项目属性——> 配置属性——> 链接器——> 系统——> 子系统

     选择控制台(SUBSYSTEM:CONSOLE)  则表示此项目是WIN32控制台程序。

     选择Windows (/SUBSYSTEM:WINDOWS) 则表示为 WIN32项目。

 

2. libavutil\common.h(87): fatal error C1004: 发现意外的文件尾

      解决方法:加入代码#define __STDC_CONSTANT_MACROS

3. 无法解析的外部符号 "void __cdecl av_log_set_level(int)" (?av_log_set_level@@YAXH@Z),该符号在函数 _main 中被引用

      原因:ffmpeg中的程序是C语言写的,如果C++调用需要加上extern "C"

      解决方案

  

extern "C"
{
	#include <libavutil/log.h>
};

 

所有代码

#define __STDC_CONSTANT_MACROS
extern "C"
{
    #include <libavutil/log.h>
};

#pragma comment(lib,"avutil.lib")


int main(int argc, char** argv)
{
    av_log_set_level(AV_LOG_DEBUG);
    av_log(NULL, AV_LOG_INFO, "一步一步学习ffmpeg!\n");
    av_log(NULL, AV_LOG_INFO, "一步一步学习ffmpeg, %s\n", "一起腾飞吧!");
    av_log(NULL, AV_LOG_INFO, "一步一步学习ffmpeg, %d!\n", 6666);
    return 0;
}

 

 

posted @ 2021-03-15 16:03  unicornsir  阅读(340)  评论(0)    收藏  举报