How to install protobuf on windows? (Win7x64/MinGW

2019-05-16 22:43发布

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

3条回答
Rolldiameter
2楼-- · 2019-05-16 23:21

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

查看更多
贪生不怕死
3楼-- · 2019-05-16 23:41

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.

查看更多
Evening l夕情丶
4楼-- · 2019-05-16 23:47

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.

查看更多
登录 后发表回答