[Libav-user] 答复: 答复: Are there any ways to use a lib (built from C++ OpenCV) in Ffmpeg filter?

salsaman salsaman at gmail.com
Sat Sep 3 17:02:22 EEST 2016


On Sat, Sep 3, 2016 at 10:56 AM, R n <flynewdream at hotmail.com> wrote:

> By the way, I have also been playing with the compiling flags for FFmpeg,
> but got different errors. For example:
>
>
> I used '--extra-libs=-lmylibrary -L/usr/lib64 -lstdc++', and got:
>
>
> .../binutils/2.25/centos6-native/da39a3e/bin/ld: .../mylibrary
> /0.1/gcc-4.9-glibc-2.20-fb/80414d5/lib/libmylibrary.a(mylibrary_file.cpp.o):
> relocation R_X86_64_32 against `.bss' can not be used when making a shared
> object; recompile with -fPIC
>
> .../mylibrary/0.1/gcc-4.9-glibc-2.20-fb/80414d5/lib/libmylibrary.a: error
> adding symbols: Bad value
>
>
>

I know this error. Try -fPIC -DPIC in the compiler and linker flags.





> Thanks.
>
>
> Rich
>
>
> ------------------------------
> *发件人:* Libav-user <libav-user-bounces at ffmpeg.org> 代表 R n <
> flynewdream at hotmail.com>
> *发送时间:* 2016年9月3日 3:54
> *收件人:* This list is about using libavcodec, libavformat, libavutil,
> libavdevice and libavfilter.
> *主题:* [Libav-user] 答复: Are there any ways to use a lib (built from C++
> OpenCV) in Ffmpeg filter?
>
>
> Thanks Perette.
>
>
> I did exactly what you suggested for the C and C++ files. (I have two
> header files, one for C and another is for C++, and the C++ header file includes
> the C header file. I have one cpp file in which I put the C and C++ source
> code. I can also split them into two cpp files for clarity). I guess
> perhaps the problem is in the how I compile the library and how I compile
> FFmpeg when I call the library from FFmpeg.
>
>
> Any suggestions?
>
>
> Thanks.
>
>
> Rich
>
>
>
>
>
> ------------------------------
> *发件人:* Libav-user <libav-user-bounces at ffmpeg.org> 代表 Perette Barella <
> perette at barella.org>
> *发送时间:* 2016年9月3日 3:38
> *收件人:* This list is about using libavcodec, libavformat, libavutil,
> libavdevice and libavfilter.
> *主题:* Re: [Libav-user] Are there any ways to use a lib (built from C++
> OpenCV) in Ffmpeg filter?
>
>
> On 2016年09月02日, at 22:32, R n <flynewdream at hotmail.com> wrote:
> I am writing a C++ library which is based on OpenCV. I want to use it in a
> Ffmpeg filter (written in C), so I write a wrapper of the library using C.
> The wrapper consists of a C header file and some C functions which call the
> C++ functions (in the C++ files). I expect the FFmpeg filter to only
> include the C header and call the C functions.
>
>>
> However, I get the following error when compiling FFmpeg:
> .../binutils/2.25/centos6-native/da39a3e/bin/ld:
> .../mylibrary/0.1/gcc-4.9-glibc-2.20/80414d5/lib/
> libmylibrary.a(mylibrary_file.cpp.o): undefined reference to symbol
> '_ZdlPv@@GLIBCXX_3.4'
> .../libgcc/4.9.x/gcc-4.9-glibc-2.20/024dbc3/lib/libstdc++.so: error
> adding symbols: DSO missing from command line
>
>
> Your approach is correct, but C++ “mangles” function names to make them
> unique when considering parameters and such.  You need to specify C
> linkage, so in your .h file, wrap it in extern “C”:
>
> #ifdef __cplusplus
> #warning is c++
> extern "C" {
> #endif
> char foo (int);
>
> #ifdef __cplusplus
> }
> #endif
>
> You need to #include the .h file in the corresponding .cpp file, so the
> C++ compiler knows not to mangle those particular function names when
> they’re compiled.
>
> Perette
>
>
>
> _______________________________________________
> Libav-user mailing list
> Libav-user at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/libav-user
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://ffmpeg.org/pipermail/libav-user/attachments/20160903/4e7f7364/attachment.html>


More information about the Libav-user mailing list