I think you should add *#define PROTOBUF_USE_DLLS *as a compiler flag. e.g., CXXFLAGS=-D*PROTOBUF_USE_DLLS*.
On Fri, Feb 17, 2017 at 7:33 AM pokamest nikak <[email protected]> wrote: > Hi! I'm trying to build Qt app with protobuf 3.2. > Since Qt is dynamically linked I built protobuf as dll by configuring with > > cmake -G "NMake Makefiles" ^ > -DCMAKE_BUILD_TYPE=Release ^ > -Dprotobuf_BUILD_SHARED_LIBS=ON ^ > -DCMAKE_INSTALL_PREFIX=../../../../install ^ > ../.. > > > Libs were included to Qt pro file > > > win32: LIBS += -L$$PWD/protobuf-windows-dynamic/lib/ -llibprotobuf > > INCLUDEPATH += $$PWD/protobuf-windows-dynamic/include > > DEPENDPATH += $$PWD/protobuf-windows-dynamic/include > > > > When I build my Qt app I got next errors: > > test.pb.obj:-1: ошибка: LNK2019: ссылка на неразрешенный внешний символ > "private: static bool > google::protobuf::io::CodedOutputStream::default_serialization_deterministic_" > (?default_serialization_deterministic_@CodedOutputStream@io@protobuf > @google@@0_NA) в функции "public: static bool __cdecl > google::protobuf::io::CodedOutputStream::IsDefaultSerializationDeterministic(void)" > (?IsDefaultSerializationDeterministic@CodedOutputStream@io@protobuf > @google@@SA_NXZ) > > > > test.pb.obj:-1: ошибка: LNK2019: ссылка на неразрешенный внешний символ > "class google::protobuf::internal::ExplicitlyConstructed<class > std::basic_string<char,struct std::char_traits<char>,class > std::allocator<char> > > > google::protobuf::internal::fixed_address_empty_string" > (?fixed_address_empty_string@internal@protobuf@google > @@3V?$ExplicitlyConstructed@V?$basic_string@DU?$char_traits@D@std@ > @V?$allocator@D@2@@std@@@123@A) в функции "public: __thiscall > r::RouteList::RouteList(class r::RouteList const &)" (??0RouteList@r > @@QAE@ABV01@@Z) > > > As described in README > > Static linking is now the default for the Protocol Buffer libraries. > Due to > issues with Win32's use of a separate heap for each DLL, as well as binary > compatibility issues between different versions of MSVC's STL library, it > is > recommended that you use static linkage only. However, it is possible to > build libprotobuf and libprotoc as DLLs if you really want. To do this, > do the following: > > * Add an additional flag `-Dprotobuf_BUILD_SHARED_LIBS=ON` when invoking > cmake > * Follow the same steps as described in the above section. > * * When compiling your project, make sure to `#define > PROTOBUF_USE_DLLS`.* > > > I tried to insert this #define string to several places, but #define > hadn't have any effect. > The last attempt was I made is insert this string to test.pb.h file > generated by protoc, and app was built successfully. > > But *.pb.h is not a good place to make changes. > Tell me please, where is good place to insert > > *#define PROTOBUF_USE_DLLS ?* > > -- > You received this message because you are subscribed to the Google Groups > "Protocol Buffers" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at https://groups.google.com/group/protobuf. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Protocol Buffers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/protobuf. For more options, visit https://groups.google.com/d/optout.
