Почему я не могу связать gRPC со своей статической библиотекой? - PullRequest
0 голосов
/ 10 октября 2019

Я скомпилировал gRPC 1.23.0 со всеми зависимостями (Protobuf, a-arec и т. Д.).

После перевода моего файла .proto в файлы *.grpc.pb.* и *.pb.* я добавил его в проект VS и успешно скомпилировал его в файл .exe.

Но после того, как я переключился *Свойство 1009 * в Dynamic library или Static library (мне действительно нужно точно Static library), оно скомпилировано без ошибок, но на этапе компоновки в Build output я вижу> 2000 предупреждений о ссылке, подобных этому:

1>grpc++_unsecure.lib(pb_encode.obj) : warning LNK4006: _pb_encode_submessage already defined in grpc++.lib(pb_encode.obj); second definition ignored
1>grpc++_unsecure.lib(pb_encode.obj) : warning LNK4221: This object file does not define any previously undefined public symbols, so it will not be used by any link operation that consumes this library
1>grpc++_unsecure.lib(codegen_init.obj) : warning LNK4006: "class grpc::CoreCodegenInterface * grpc::g_core_codegen_interface" (?g_core_codegen_interface@grpc@@3PAVCoreCodegenInterface@1@A) already defined in grpc++.lib(codegen_init.obj); second definition ignored
1>grpc++_unsecure.lib(codegen_init.obj) : warning LNK4006: "class grpc::GrpcLibraryInterface * grpc::g_glip" (?g_glip@grpc@@3PAVGrpcLibraryInterface@1@A) already defined in grpc++.lib(codegen_init.obj); second definition ignored
1>grpc++_unsecure.lib(codegen_init.obj) : warning LNK4221: This object file does not define any previously undefined public symbols, so it will not be used by any link operation that consumes this library
1>grpc_unsecure.lib(init.obj) : warning LNK4006: _grpc_register_plugin already defined in grpc.lib(init.obj); second definition ignored
1>grpc_unsecure.lib(init.obj) : warning LNK4006: _grpc_init already defined in grpc.lib(init.obj); second definition ignored
1>grpc_unsecure.lib(init.obj) : warning LNK4006: _grpc_shutdown already defined in grpc.lib(init.obj); second definition ignored
1>grpc_unsecure.lib(init.obj) : warning LNK4006: _grpc_is_initialized already defined in grpc.lib(init.obj); second definition ignored

И, наконец, связывание заканчивается с ошибкой:

1>libprotobufd.lib(version.res) : fatal error LNK1241: resource file libprotocd.lib(version.res) already specified

Эта ошибка появляется только для Debug конфигурации. На Release он успешно соединяется, но также с предупреждениями о ссылках.

Что мне нужно сделать, чтобы решить эту проблему?

...