On Monday, 17 August 2015 14:01:40 UTC+10, Feng Xiao wrote:
>
> On Sun, Aug 16, 2015 at 8:47 PM, Dave Hirschfeld <[email protected] 
> <javascript:>> wrote:
>
>> Trying to build the python package from the latest master on Windows with 
>> msvc I'm getting link errors shown below. Just want  to check if this is 
>> this a known  problem with the current master? Builds from a couple of 
>> weeks ago worked.
>>
> We don't yet have test to cover python C++ extension build on Windows, so 
> it might be broken without notice (or maybe it doesn't work from the 
>  beginning..). Feel free to submit an issue for this, or better help send 
> us a patch to fix the issue :)
>  
>
>>
>> Thanks,
>> Dave
>>
>>
>> C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\BIN\amd64\link.exe 
>> /DLL /nologo /INCREMENTAL:NO 
>> /LIBPATH:C:\Anaconda3\conda-bld\work\cmake\Release 
>> /LIBPATH:C:\Anaconda3\envs\_build\libs 
>> /LIBPATH:C:\Anaconda3\envs\_build\PCbuild\amd64 libprotobuf.lib 
>> /EXPORT:init_message 
>> build\temp.win-amd64-2.7\Release\google/protobuf/pyext\descriptor.obj 
>> build\temp.win-amd64-2.7\Release\google/protobuf/pyext\descriptor_containers.obj
>>  
>> build\temp.win-amd64-2.7\Release\google/protobuf/pyext\descriptor_pool.obj 
>> build\temp.win-amd64-2.7\Release\google/protobuf/pyext\extension_dict.obj 
>> build\temp.win-amd64-2.7\Release\google/protobuf/pyext\message.obj 
>> build\temp.win-amd64-2.7\Release\google/protobuf/pyext\message_map_container.obj
>>  
>> build\temp.win-amd64-2.7\Release\google/protobuf/pyext\repeated_composite_container.obj
>>  
>> build\temp.win-amd64-2.7\Release\google/protobuf/pyext\repeated_scalar_container.obj
>>  
>> build\temp.win-amd64-2.7\Release\google/protobuf/pyext\scalar_map_container.obj
>>  
>> /OUT:build\lib.win-amd64-2.7\google\protobuf\pyext\_message.pyd 
>> /IMPLIB:build\temp.win-amd64-2.7\Release\google/protobuf/pyext\_message.lib 
>> /MANIFESTFILE:build\temp.win-amd64-2.7\Release\google/protobuf/pyext\_message.pyd.manifest
>>
>> <snip> 

>
>> repeated_composite_container.obj : error LNK2001: unresolved external 
>> symbol "int __cdecl google::protobuf::internal::Barrier_AtomicIncrement(int 
>> volatile *,int)" 
>> (?Barrier_AtomicIncrement@internal@protobuf@google@@YAHPECHH@Z)
>>
>> build\lib.win-amd64-2.7\google\protobuf\pyext\_message.pyd : fatal error 
>> LNK1120: 4 unresolved externals
>> error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio 
>> 12.0\\VC\\BIN\\amd64\\link.exe' failed with exit status 1120
>>
>>
>>

The above error was a red-herring. The original error I got was a bunch of 
LNK2038 errors like below:
<snip>
libprotobuf.lib(coded_stream.obj) : error LNK2038: mismatch detected for 
'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 
'MD_DynamicRelease' in descriptor.obj

libprotobuf.lib(message_lite.obj) : error LNK2038: mismatch detected for 
'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 
'MD_DynamicRelease' in descriptor.obj
<snip>

In attempting to fix the problem by changing cmake to build shared libs I 
got the LNK1120 "unresolved externals" errors.

It appears that the original LNK2038 MT/MD errors are because of the below 
commit:

https://github.com/google/protobuf/commit/1858ac9b42c167ab6d89b929c075872d740eb0b5

Simply reverting that commit allows the python build to proceed.

I'd send a patch to revert it but it was obviously made for some reason. As 
it is it doesn't appear to be compatible with building the python extension 
and I'm not sure how to fix that (or even if it's possible). 

To get my conda package to  build I'm currently just reverting that change. 
The resulting package can be installed (for py27/py3.4) from my 
anaconda.org  channel:

conda  install -c dhirschfeld protobuf

Regards,
Dave


 

-- 
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 http://groups.google.com/group/protobuf.
For more options, visit https://groups.google.com/d/optout.

Reply via email to