C++-Protobuf does not compile in VS2012. Now I want to use MinGW to compile it on windows. Can someone please give me some brief headwords on how to compile protobuf on Win7 x64. I already installed MinGW with the GUI installer. Google writes as MinGW setup notice that I should refer to the Unix installation notes. But I cant figure out how to use the auto tools on windows.
Edit
Okay this is what I've done until now:
$ mount C:/ WinDir
$ cd ./[...]/protobuf.2.4.1
$ ./configure
$ minGW32-make.exe
$ minGW32-make.exe check
minGW32-make.exe runs without errors, but no tests are running and I cant find libprotobuf.lib. There are some libprotobuf.dll but I need the lib, dont I?.
You should have an MSys console together with your MinGW instalation. This console provides an linux-like environment in which you should be able to use autotools normally.
If MSys is not installed, you can grab it from the MinGW site too.
cd
to your directory with sources and try the usual:Some libraries cause problems on Windows but most compile well with MinGW and MSys. Come back and add more info to your question if you run into specific problems.
Edit:
Usually for a dynamic library you'd get
protobuf.dll
(the dynamic library) andlibprotobuf.a
(the static wrapper library).When linking, just pass
-lprotobuf
to the linker - it will look for bothlibprotobuf.a
andprotobuf.lib
.(
.lib
is another static library format, which is partially handled by MinGW but not native here.)I could get dll and lib both. This is when you do not want static lib file and want to use dll and lib file. You need to make following changes in Protobuf code:
In libProtoBuf project settings, in C/C++ Preprocessor add following flags. PROTOBUF_USE_DLLS; LIBPROTOBUF_EXPORTS; Those flags will export information from profobuf using dllexport
in ur client code where you are using Protobuf, define: PROTOBUF_USE_DLLS. Which will make protobuf includes to use dllimport.
Once you do step 2, you will see both dll and lib in your output folder. Otherwise, you will always see just dll and not lib file.
Hope this helps. If not, please write a message here and I can help you getting this sorted out.
You will not work with a
.lib
file when using the MinGW toolchain. Instead, you are able to link against the dll directly. The MinGW Wiki explains this.