Reputation: 10487
I'm attempting to build some video-reading code around libavformat. After getting the compiled DLLs and .lib
files here, I go to build my code, and the linker can't find any of the libavformat symbols even though I've linked in the provided .lib
files.
Inspecting libavformat.lib
with dumpbin -headers
reveals that it exports the desired functions with an underscore prefix. For example, while I want to call avformat_open_input
, the .lib file gives _avformat_open_input
.
Why is this, and why can't I link the precompiled dlls?
Upvotes: 2
Views: 4499
Reputation: 1380
You need to do following all tasks to use libav
with MSVC++
. First goto Zeranoe
Shared
Version, Copy all .dll
files from bin
folder and paste them in the output directory where exe
will be generated.Developer
Version, Copy all .lib
files from lib
folder and paste them with your main c++ file is located (e.g. Folder-1\Folder-2
Where Folder-1
has the .sln
file so you have to put .lib
files in Folder-2
)Developer
Version you downloaded in Step 2 copy all directories from include
folder and paste them in Folder-2 (See details about Folder-2 in step 2)C:\Program Files\Microsoft Visual Studio 10.0\VC\include\
folder.You have to use this extern
because libav
is a C
library.
extern "C" {
#include "libavcodec/avcodec.h"
#include "libavdevice/avdevice.h"
#include "libavfilter/avfilter.h"
#include "libavformat/avformat.h"
#include "libavutil/avutil.h"
}
Upvotes: 8
Reputation: 1017
Fetch the 32-bit libraries and you should be fine :) Your application platform has to match the libraries used (and vica versa).
Upvotes: 0