Mark duplicate as https://github.com/protocolbuffers/protobuf/issues/10230
在2022年7月7日星期四 UTC-7 07:51:59<[email protected]> 写道: > Hi, > > I got a problem with building python egg file with --cpp_implementation > I've tried to build it with protobuf 3.15.0 on Windows 10 > I got an error: > (python37_protobuf) C:\protobuf\python>python setup.py build > --cpp_implementation The system cannot link the 16 symbols from library > My steps to reproduce : > > 1. git clone https://github.com/google/protobuf.git > 2. cd protobuf > 3. git checkout v3.15.0 > 4. cd cmake > 5. mkdir -p build\solution > 6. cmake -G "Visual Studio 16 2019" ../.. --config Release > 7. In Visual Studio I set up a properties > for libprotobuf and libprotobuf-lite as Runtime Library (Multi-thread DLL > (/MD)) > 8. build targets: libprotobuf libprotobuf-lite libprotoc protoc > 9. Add path to the PATH env: set > PATH=%PATH%;C:\Path\to\protobuf\cmake\build\solution\Release > 10. cd C:\Path\to\protobuf\python > 11. Change line in setup.py from: libraries = > ['protobuf'] to libraries = ['libprotobuf', 'libprotobuf-lite'] > 12. Change line in setup.py from: extra_objects = > ['../src/.libs/libprotobuf.a', > '../src/.libs/libprotobuf-lite.a'] to extra_objects = > ['../cmake/build/solution/Release/libprotobuf.lib', > '../cmake/build/solution/Release/libprotobuf-lite.lib'] > > 13. Run: python setup.py build –cpp_implementation > > On the 13th step I got an error: > C:\Program Files (x86)\Microsoft Visual > Studio\2019\Professional\VC\Tools\MSVC\14.29.30133\bin\HostX86\x64\link.exe > /nologo /INCREMENTAL:NO /LTCG /DLL /MANIFEST:EMBED,ID=2 /MANIFESTUAC:NO > /LIBPATH:C:/Users/akulikow/source/repos/protobuf/cmake/build/solution/Release > /LIBPATH:C:/Users/akulikow/cmake /LIBPATH:C:/Users/akulikow/cmake/lib > /LIBPATH:C:/Users/akulikow/cmake/bin > /LIBPATH:c:\Users\akulikow\python37_proto\libs > /LIBPATH:C:\Users\akulikow\AppData\Local\Programs\Python\Python37\libs > /LIBPATH:C:\Users\akulikow\AppData\Local\Programs\Python\Python37 > /LIBPATH:c:\Users\akulikow\python37_proto\PCbuild\amd64 > "/LIBPATH:C:\Program Files (x86)\Microsoft Visual > Studio\2019\Professional\VC\Tools\MSVC\14.29.30133\ATLMFC\lib\x64" > "/LIBPATH:C:\Program Files (x86)\Microsoft Visual > Studio\2019\Professional\VC\Tools\MSVC\14.29.30133\lib\x64" > "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.19041.0\ucrt\x64" > "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.19041.0\um\x64" > "/LIBPATH:C:\Program Files (x86)\Microsoft Visual > Studio\2019\Professional\VC\Tools\MSVC\14.29.30133\ATLMFC\lib\x64" > "/LIBPATH:C:\Program Files (x86)\Microsoft Visual > Studio\2019\Professional\VC\Tools\MSVC\14.29.30133\lib\x64" > "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.19041.0\ucrt\x64" > "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.19041.0\um\x64" > libprotobuf.lib libprotobuf-lite.lib /EXPORT:PyInit__message > build\temp.win-amd64-3.7\Release\google/protobuf/pyext\descriptor.obj > build\temp.win-amd64-3.7\Release\google/protobuf/pyext\descriptor_containers.obj > > build\temp.win-amd64-3.7\Release\google/protobuf/pyext\descriptor_database.obj > > build\temp.win-amd64-3.7\Release\google/protobuf/pyext\descriptor_pool.obj > build\temp.win-amd64-3.7\Release\google/protobuf/pyext\extension_dict.obj > build\temp.win-amd64-3.7\Release\google/protobuf/pyext\field.obj > build\temp.win-amd64-3.7\Release\google/protobuf/pyext\map_container.obj > build\temp.win-amd64-3.7\Release\google/protobuf/pyext\message.obj > build\temp.win-amd64-3.7\Release\google/protobuf/pyext\message_factory.obj > build\temp.win-amd64-3.7\Release\google/protobuf/pyext\message_module.obj > build\temp.win-amd64-3.7\Release\google/protobuf/pyext\repeated_composite_container.obj > > build\temp.win-amd64-3.7\Release\google/protobuf/pyext\repeated_scalar_container.obj > > build\temp.win-amd64-3.7\Release\google/protobuf/pyext\unknown_fields.obj > /OUT:build\lib.win-amd64-3.7\google\protobuf\pyext\_message.cp37-win_amd64.pyd > > /IMPLIB:build\temp.win-amd64-3.7\Release\google/protobuf/pyext\_message.cp37-win_amd64.lib > Creating library > build\temp.win-amd64-3.7\Release\google/protobuf/pyext\_message.cp37-win_amd64.lib > > and object > build\temp.win-amd64-3.7\Release\google/protobuf/pyext\_message.cp37-win_amd64.exp > descriptor.obj : error LNK2001: unresolved external symbol "struct > google::protobuf::ServiceDescriptorProtoDefaultTypeInternal > google::protobuf::_ServiceDescriptorProto_default_instance_" > (?_ServiceDescriptorProto_default_instance_@protobuf@google@@3UServiceDescriptorProtoDefaultTypeInternal@12@A) > descriptor.obj : error LNK2001: unresolved external symbol "struct > google::protobuf::DescriptorProtoDefaultTypeInternal > google::protobuf::_DescriptorProto_default_instance_" > (?_DescriptorProto_default_instance_@protobuf@google@@3UDescriptorProtoDefaultTypeInternal@12@A) > descriptor.obj : error LNK2001: unresolved external symbol "private: > static int > google::protobuf::io::CodedInputStream::default_recursion_limit_" > (?default_recursion_limit_@CodedInputStream@io@protobuf@google@@0HA) > descriptor.obj : error LNK2001: unresolved external symbol "private: > static enum google::protobuf::FieldDescriptor::CppType const * const > google::protobuf::FieldDescriptor::kTypeToCppTypeMap" > (?kTypeToCppTypeMap@FieldDescriptor@protobuf@google@@0QBW4CppType@123@B) > descriptor.obj : error LNK2001: unresolved external symbol "struct > google::protobuf::MessageOptionsDefaultTypeInternal > google::protobuf::_MessageOptions_default_instance_" > (?_MessageOptions_default_instance_@protobuf@google@@3UMessageOptionsDefaultTypeInternal@12@A) > descriptor.obj : error LNK2001: unresolved external symbol "struct > google::protobuf::OneofOptionsDefaultTypeInternal > google::protobuf::_OneofOptions_default_instance_" > (?_OneofOptions_default_instance_@protobuf@google@@3UOneofOptionsDefaultTypeInternal@12@A) > descriptor.obj : error LNK2001: unresolved external symbol "struct > google::protobuf::EnumOptionsDefaultTypeInternal > google::protobuf::_EnumOptions_default_instance_" > (?_EnumOptions_default_instance_@protobuf@google@@3UEnumOptionsDefaultTypeInternal@12@A) > descriptor.obj : error LNK2001: unresolved external symbol "struct > google::protobuf::EnumValueOptionsDefaultTypeInternal > google::protobuf::_EnumValueOptions_default_instance_" > (?_EnumValueOptions_default_instance_@protobuf@google@@3UEnumValueOptionsDefaultTypeInternal@12@A) > descriptor.obj : error LNK2001: unresolved external symbol "struct > google::protobuf::EnumDescriptorProtoDefaultTypeInternal > google::protobuf::_EnumDescriptorProto_default_instance_" > (?_EnumDescriptorProto_default_instance_@protobuf@google@@3UEnumDescriptorProtoDefaultTypeInternal@12@A) > descriptor.obj : error LNK2001: unresolved external symbol "struct > google::protobuf::FileDescriptorProtoDefaultTypeInternal > google::protobuf::_FileDescriptorProto_default_instance_" > (?_FileDescriptorProto_default_instance_@protobuf@google@@3UFileDescriptorProtoDefaultTypeInternal@12@A) > descriptor.obj : error LNK2001: unresolved external symbol "struct > google::protobuf::FileOptionsDefaultTypeInternal > google::protobuf::_FileOptions_default_instance_" > (?_FileOptions_default_instance_@protobuf@google@@3UFileOptionsDefaultTypeInternal@12@A) > descriptor.obj : error LNK2001: unresolved external symbol "struct > google::protobuf::MethodDescriptorProtoDefaultTypeInternal > google::protobuf::_MethodDescriptorProto_default_instance_" > (?_MethodDescriptorProto_default_instance_@protobuf@google@@3UMethodDescriptorProtoDefaultTypeInternal@12@A) > descriptor.obj : error LNK2001: unresolved external symbol "struct > google::protobuf::FieldOptionsDefaultTypeInternal > google::protobuf::_FieldOptions_default_instance_" > (?_FieldOptions_default_instance_@protobuf@google@@3UFieldOptionsDefaultTypeInternal@12@A) > descriptor.obj : error LNK2001: unresolved external symbol "const > google::protobuf::FileDescriptorProto::`vftable'" > (??_7FileDescriptorProto@protobuf@google@@6B@) > map_container.obj : error LNK2001: unresolved external symbol "private: > static char const * const * const > google::protobuf::FieldDescriptor::kCppTypeToName" > (?kCppTypeToName@FieldDescriptor@protobuf@google@@0QBQEBDB) > message.obj : error LNK2001: unresolved external symbol "float __cdecl > google::protobuf::io::SafeDoubleToFloat(double)" > (?SafeDoubleToFloat@io@protobuf@google@@YAMN@Z) > build\lib.win-amd64-3.7\google\protobuf\pyext\_message.cp37-win_amd64.pyd > : fatal error LNK1120: 16 unresolved externals > error: command 'C:\\Program Files (x86)\\Microsoft Visual > Studio\\2019\\Professional\\VC\\Tools\\MSVC\\14.29.30133\\bin\\HostX86\\x64\\link.exe' > > failed with exit status 1120 > > When I run directly the linker with these parameters in verbose mode I see > as a result: > Finished searching libraries > > Searching libraries > Searching > C:\Users\akulikow\source\repos\protobuf\cmake\build\solution\Release\libprotobuf.lib: > Searching > C:\Users\akulikow\source\repos\protobuf\cmake\build\solution\Release\libprotobuf-lite.lib: > Searching > C:\Users\akulikow\AppData\Local\Programs\Python\Python37\libs\python37.lib: > Searching C:\Program Files (x86)\Microsoft Visual > Studio\2019\Professional\VC\Tools\MSVC\14.29.30133\lib\x64\libcpmt.lib: > Searching C:\Program Files (x86)\Microsoft Visual > Studio\2019\Professional\VC\Tools\MSVC\14.29.30133\lib\x64\LIBCMT.lib: > Searching C:\Program Files (x86)\Microsoft Visual > Studio\2019\Professional\VC\Tools\MSVC\14.29.30133\lib\x64\OLDNAMES.lib: > Searching C:\Program Files (x86)\Windows > Kits\10\lib\10.0.19041.0\um\x64\kernel32.lib: > Searching C:\Program Files (x86)\Microsoft Visual > Studio\2019\Professional\VC\Tools\MSVC\14.29.30133\lib\x64\libvcruntime.lib: > Searching C:\Program Files (x86)\Windows > Kits\10\lib\10.0.19041.0\ucrt\x64\libucrt.lib: > Searching C:\Program Files (x86)\Windows > Kits\10\lib\10.0.19041.0\um\x64\uuid.lib: > > Finished searching libraries > > Finished pass 1 > > It looks like a searched symbols are not in the libraries. Do you have > idea what is going on? > > Best regards, > Artur -- 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 view this discussion on the web visit https://groups.google.com/d/msgid/protobuf/a76a71be-06bc-46ec-87a5-7d0138221a62n%40googlegroups.com.
