简体   繁体   中英

How to install protobuf on windows? (Win7x64/MinGW)

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:

$ ./configure
$ make

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:

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?.

Usually for a dynamic library you'd get protobuf.dll (the dynamic library) and libprotobuf.a (the static wrapper library).

When linking, just pass -lprotobuf to the linker - it will look for both libprotobuf.a and protobuf.lib .

( .lib is another static library format, which is partially handled by MinGW but not native here.)

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 .

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:

  1. Open the project in VS. Or any other editor. I use VS2015.
  2. 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

  3. 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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM