CentOS 6.2 で共有ライブラリを構築しています。共有ライブラリには、いくつかの cpp ファイル、ヘッダー、c 共有ライブラリ、および ffmpeg が含まれます。共有ライブラリは、ビデオの変換に使用されます。g++ コンパイルを使用すると、次のようになります。
g++ DataType.h h264function.h h264function.cpp videoconvert.h videoconvert.cpp stdafx.h stdafx.cpp YV12toRGB.h YV12toRGB.cpp -lMPCtrl -lavcodec -lavformat -lavutil - lhcnetsdk -lPlayCtrl -lpthread -fPIC -shared -o libtest.so
それは正常に動作し、ビデオは標準の h264 コードとして変換できます。ライブラリの構築に使用されるファイルは次のようです。
良い.しかし、自動ツールを使用してライブラリを作成すると、正しく機能しません.ここに私のconfigure.inとMakefile.amがあります:
Makefile.am:
prefix=/usr
lib_LTLIBRARIES=libhikvisiontranso.la
libhikvisiontranso_la_SOURCES=stdafx.h stdafx.cpp videoconvert.h videoconvert.cpp
h264function.h h264function.cpp YV12toRGB.h YV12toRGB.cpp DataType.h
libhikvisiontranso_la_LDFLAGS=-avoid-version -shared
libhikvisiontranso_la_LIBADD=-lpthread -lMPCtrl -lhcnetsdk -lPlayCtrl -lavformat - lavcodec -lavutil
ACLOCAL_AMFLAGS= -I m4
configure.in:
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_PREREQ([2.63])
AC_INIT([hikvisiontranso],[1.0], [songxiawuren@gmail.com])
AM_INIT_AUTOMAKE([libhikvisiontranso.so],[1.0])
AC_CONFIG_SRCDIR([DataType.h])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_MACRO_DIR([m4])
AT_INIT
# Checks for programs.
AC_PROG_CXX
AC_PROG_CC
# Checks for libraries.
# Checks for header files.
AC_CHECK_HEADERS([inttypes.h limits.h stddef.h stdint.h stdlib.h string.h])
# Checks for typedefs, structures, and compiler characteristics.
AC_HEADER_STDBOOL
AC_C_INLINE
AC_TYPE_INT16_T
AC_TYPE_INT32_T
AC_TYPE_INT64_T
AC_TYPE_INT8_T
AC_TYPE_SIZE_T
AC_TYPE_UINT16_T
AC_TYPE_UINT32_T
AC_TYPE_UINT64_T
AC_TYPE_UINT8_T
# Checks for library functions.
AC_FUNC_MALLOC
AC_PROG_LIBTOOL
AC_CONFIG_FILES([Makefile])
AC_OUTPUT
間違った出力は次のとおりです。
SDL Init
init console=1
Output #0, avi, to '/home/ningge/Desktop/HaikangDvr.avi':
Stream #0.0: Invalid Codec type -1
Height = 576; Width = 704;totalfram=90000
Segmentation fault (core dumped)
権利は次のとおりです。
SDL Init
init console=1
Output #0, avi, to '/home/ningge/Desktop/HaikangDvr.avi':
Stream #0.0: Video: mpeg4, yuv420p, 704x576, q=2-31, 200 kb/s, 90k tbn, 25 tbc
Height = 576; Width = 704;totalfram=90000
CSDLInit goOut
automakeの何が問題なのかを誰かが見つけてくれることを願っています。