首先是一些背景知识。
我尝试使用libass扩展/配置选项在Windows上编译ffmpeg。
使用visual studio项目libass-msvc我使用Visual Studio作为静态库构建了libass。
然后我用MSYS和pkg-config安装了MinGW。按照ffmpeg MSVC installation guide上的说明,我将环境配置为使用MSVC链接器构建并构建x64。
当我尝试使用./configure配置libass进行编译时--enable-libass --toolchain = msvc我在日志文件中收到以下错误:
找不到文件ass / ass.h
pkg-config找不到libass
我已尝试以下方法来解决此问题。
为libass创建一个.pc文件,并将其添加到PKG_CONFIG_PATH环境变量中。请参阅下面的文件内容(执行此操作后,pkg-config libass --version会打印0.81,而不是正确的版本号,但至少会显示一些内容。)
将libass .h文件复制到MinGW / include / ass文件夹中,将.lib文件复制到MinGW / libs文件夹中。
将libass include和bin文件夹添加到PATH环境变量
下载libass和依赖项源,然后尝试使用MSYS与MSVC编译器构建它。我的目标是能够使用" make install"让MinGW将libass安装到正确的位置。在尝试修复链接器错误数小时后,我放弃了这个想法,因为一些libass依赖项使得文件只能与GCC GNU编译器一起使用。
使用MinGW make / make install使用GCC GNU编译libass然后尝试使用GNU库安装libass。这又导致链接器错误(我知道这是个坏主意,但值得一试)。
尝试使用额外的lib并包含构建配置选项--extra-cflags =" ffmpeg-dir / extra / include" \ --extra-LDFLAGS =" ffmped-DIR /额外/ ffmpeg_build / lib中"然后将libs和.h文件添加到这些位置
.pc文件
libass.pc:
prefix=/MinGW
includedir=libass-directory/include
libdir=libass-director/x64/bin/
Name: libass
Description: Libass project
Version: 0.13.7
如果有人能够对我做错的事情提出任何见解或建议,我现在完全陷入困境并且缺乏想法。
更新
我创建了包含libass路径的INCLUDE
和LIBDIR
环境路径变量。现在正确包括libass。但是,我现在为函数check_ass_library_init获取以下链接器错误。
check_func_headers ass / ass.h ass_library_init check_ld cc check_cc BEGIN ./ffconf.RZMYFWdc/test.c 1 #include 2 #include 3 long check_ass_library_init(void){return(long) ass_library_init; } 4 int main(void){int ret = 0; 5 ret | =((intptr_t)check_ass_library_init)& 0xFFFF的; 6返回; } END ./ffconf.RZMYFWdc/test.c cl -D_ISOC99_SOURCE -D_FILE_OFFSET_BITS = 64 -D_LARGEFILE_SOURCE - D_USE_MATH_DEFINES -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_WARNINGS - D_WIN32_WINNT = 0x0502 -nologo -c -Fo./ffconf.RZMYFWdc/test.o ./ffconf.RZMYFWdc/test.c test.c的 ./ffconf.RZMYFWdc/test.c(3):警告C4311:'输出':指针截断 来自' ASS_Library *(__ cdecl *)(无效)'长期' ./compat/windows/mslink -nologo -out:./ ffconf.RZMYFWdc / test.exe ./ffconf.RZMYFWdc/test.o psapi.lib advapi32.lib shell32.lib ole32.lib test.o:错误LNK2019:未解析的外部符号ass_library_init 在函数check_ass_library_init中引用 ./ffconf.RZMYFWdc/test.exe:致命错误LNK1120:1个未解析的外部 错误:使用pkg-config
找不到libass
使用ass_library_init的libass测试项目使用相同的lib文件编译很好,libs看起来很好。
从我从这行"./compat/windows/mslink -nologo -out:./ffconf.RZMYFWdc/test.exe ./ffconf.RZMYFWdc/test.o psapi.lib advapi32.lib shell32.lib ole32.lib"
看到的,libass没有被传递给链接器。
我怀疑在使用MSVC进行编译时,配置文件没有在make文件中创建libass的链接。
我是正确还是我要以错误的方式编译?