How to build x264/libx264.dll in Windows



For someone coming from a windows background, where you do virtually everything, using GUI probably with Visual studio or an equivalent IDE, compiling a program from the command line can be a daunting task.

This blog post will guide you through compiling and building the popular open source video encoding library on windows using the MinGW(Minimalist GNU on Windows).

First you need to download the x264 source code from http://x264.nl/ Or if you know how to use git, you can git clone the x264 from git://git.videolan.org/x264.git.

Then you should download MinGW from http://sourceforge.net/projects/mingw/files Download the mingw-get-inst-20111118.exe (591.9 kB) install it and during the installation steps, select all the check boxes.

After the installation is completed, then from Start button , click All program, then click MinGW and then Click on MinGW shell, this brings up the following window

MinGW bash
From the msys shell change your directory to the location where your x264 source code is, in my own case the x264 code is in the c: drive so I will simply Type cd c:\x264

 MinGW bash2

Then type ./configure and press enter, this screen waits for some seconds and the bring

 MinGW bash4

Then you can now type make and press enter, this will bring up the window below, showing the progress of the compilation process.

 MinGW bash3

After the compilation is finished, if you look into your x264 directory you will find x264.exe file there.

 MinGW bash5


Now compiling the x264 into a dynamic link library that can be used in Visual studio takes another process entirely. Open the MinGW bash once again and change the directory to the location of your x264 source code, just like you did previously.
Then type
./configure --disable-cli --enable-shared --extra-ldflags=-Wl,--output-def=libx264-120.def
              or just
./configure --disable-cli --enable-shared --extra-ldflags=-Wl,--output-def=libx264.def


 MinGW bash6

Now in libx264-120.def “120” is the version of the x264 you are using, you can find the version of the x264 you are using by opening the x264.h file in your x264 source folder you will see something like this #define X264_BUILD 120 depending on your version.

You can now type the make command and press enter and you will find the libx264-120.dll in your x264 source folder. Then rename libx264-120.dll to libx264.dll and you have you dynamic link library to work with.

 window

If you wish to generate the Visual Studio .lib file to work with then open a Visual Studio command prompt, and change the directory to the location of the x264 source .
Then run this command
 LIB /DEF:libx264.def
Then press enter

visual studio command prompt

And your libx264.lib would be generated.




Share this page on


10 Comment(s)   26 People Like(s) This Page   Permalink  

 Click  To Like This Page

comments powered by Disqus



Older Comment(s)

Posted by    kuno

Wednesday, February 8, 2012    6:05 PM

very nice, works




Posted by    Ayobami Adewole

Thursday, February 9, 2012    1:10 AM

@Kuno thanks.




Posted by    suneel

Friday, February 10, 2012    6:54 AM

after configuring it says "No working C compiler found"




Posted by    Ayobami Adewole

Friday, February 10, 2012    1:27 PM

@Suneel check to see whether the installation of your MinGW was successful, if not re-install it. It should work




Posted by    suneel

Thursday, February 16, 2012    6:00 AM

Ayobami Adewole Error 1 error LNK2001: unresolved external symbol _flv_output dspx264.obj dspx264 the above linker error getting. Iam using libx264.lib. my code: videoFile = flv_output; videoFile.open_file( "flv.flv", &hout,&out) but its unable to get the definition. Is flv.o is included in libx264.lib or not. If not how can i add flv.o to libx264.lib Thank u




Posted by    Ayobami Adewole

Thursday, February 16, 2012    6:08 PM

@Suneel, I hope you have added libx264.lib to the list of linked libraries in your project, if you have and you are still getting this error, its probably you have changed a portion in the source code before you compiled it, try and download a fresh copy of x264 source code, compile it and link it to your project, if you still get the same error let me know.




Posted by    onetime

Friday, February 17, 2012    4:48 PM

libx264.lib and lib264.dll that were built on MinGW don't work correctly with VisualC++2010. http://stackoverflow.com/questions/9240782/weird-and-unpredictable-crash-when-using-libx264-cross-compiled-with-mingw/9327617#9327617 It's work "sometime" but not anytime.




Posted by    Ayobami Adewole

Tuesday, February 21, 2012    12:51 PM

@Onetime I will look into that as soon as I have spare time




Posted by    Dmitriy Zaitsev

Wednesday, June 13, 2012    10:14 PM

Thanks for your article - works great :)




Posted by    Gilad

Sunday, December 09, 2012    8:05 AM

Great! can you add instructions for compiling shared dll for 64bit ?




page