Mark duplicate as https://github.com/protocolbuffers/protobuf/issues/10230

在2022年7月7日星期四 UTC-7 07:51:59<artur.kul...@gmail.com> 写道:

> 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 protobuf+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/protobuf/a76a71be-06bc-46ec-87a5-7d0138221a62n%40googlegroups.com.

Reply via email to