Azure / azure-iot-sdk-c

A C99 SDK for connecting devices to Microsoft Azure IoT services
https://azure.github.io/azure-iot-sdk-c
Other
589 stars 737 forks source link

Azure_iot_sdk_c build failed with fatal error C1128 under amd64 on windows #112

Closed PhoebeHui closed 7 years ago

PhoebeHui commented 7 years ago

I build Azure_iot_sdk_c with Visual studio 2017 RTW compiler and STL headers on Windows Server 2012 R2, but it failed with fatal error C1128 under amd64, it compiles fine on x86. When I build it with /bigobj under amd64, it will pass, could you help have a look about this issue?

Failures: D:\Azure_iot_sdk_c\src\uamqp\tests\connection_ut\connection_ut.c : fatal error C1128: <func:#0, Mod:D:\Azure_iot_sdk_c\src\uamqp\tests\connection_ut\connection_ut.c> number of sections exceeded object file format limit: compile with /bigobj [D:\Azure_iot_sdk_c\build_x64\uamqp\tests\connection_ut\connection_ut_testsonly_lib.vcxproj] D:\Azure_iot_sdk_c\src\uamqp\tests\cbs_ut\cbs_ut.c : fatal error C1128: <func:#0, Mod:D:\Azure_iot_sdk_c\src\uamqp\tests\cbs_ut\cbs_ut.c> number of sections exceeded object file format limit: compile with /bigobj [D:\Azure_iot_sdk_c\build_x64\uamqp\tests\cbs_ut\cbs_ut_testsonly_lib.vcxproj] …

Repro steps: Open VS2015 x86 Native tools command tool git clone --recursive http://www.github.com/azure/azure-iot-sdk-c D:\Azure_iot_sdk_c\src cd D:\Azure_iot_sdk_c mkdir build_x64 && pushd build_x64 cmake -G “Visual Studio 14 Win64” -Drun_unittests:BOOL=ON ..\src\ msbuild azure_iot_sdks.sln /p:Configuration=Release /p:Platform=x64 /m /t:Rebuild >D:\ Azure_iot_sdk_c\build.log

You can see the failures in the D:\ Azure_iot_sdk_c\build.log See error c1128 in https://msdn.microsoft.com/en-us/library/8578y171.aspx

jebrando commented 7 years ago

Can you try running this with the Unittests off and see if it builds. My hypothesis is that the unittests are using more memory than the machine has. Let us know if this fixes the issues?

PhoebeHui commented 7 years ago

It compiles fine when turn off Unittests under amd64, however, it will be great if we can run Unittests as well

jebrando commented 7 years ago

We have an extensive Unittest framework and it seems to be taking up too much memory for that computer. If you add more memory to the machine you should be able to run unittests.