Revlib 2024.2.2 requires Visual Studio 17.9 for C++ simulation support on Windows

If you update to Revlib 2024.2.2, the windows build (for simulation) was built with Visual Studio 17.9. You need to update to your local Visual Studio to 17.9 or later or disable desktop support in your project.

These are the types of errors you get

> Task :linkFrcUserProgramWindowsx86-64DebugExecutable FAILED
REVLib.lib(CANSparkLowLevel.obj) : warning LNK4099: PDB '' was not found with 'REVLib.lib(CANSparkLowLevel.obj)' or at ''; linking object as if no debug info
REVLib.lib(CANSparkMax.obj) : warning LNK4099: PDB '' was not found with 'REVLib.lib(CANSparkMax.obj)' or at ''; linking object as if no debug info
REVLib.lib(CANSparkBase.obj) : warning LNK4099: PDB '' was not found with 'REVLib.lib(CANSparkBase.obj)' or at ''; linking object as if no debug info
REVLib.lib(SparkMaxAlternateEncoder.obj) : warning LNK4099: PDB '' was not found with 'REVLib.lib(SparkMaxAlternateEncoder.obj)' or at ''; linking object as if no debug info
REVLib.lib(SparkAbsoluteEncoder.obj) : warning LNK4099: PDB '' was not found with 'REVLib.lib(SparkAbsoluteEncoder.obj)' or at ''; linking object as if no debug info
REVLib.lib(SparkAnalogSensor.obj) : warning LNK4099: PDB '' was not found with 'REVLib.lib(SparkAnalogSensor.obj)' or at ''; linking object as if no debug info
REVLib.lib(SparkLimitSwitch.obj) : warning LNK4099: PDB '' was not found with 'REVLib.lib(SparkLimitSwitch.obj)' or at ''; linking object as if no debug info
REVLib.lib(SparkPIDController.obj) : warning LNK4099: PDB '' was not found with 'REVLib.lib(SparkPIDController.obj)' or at ''; linking object as if no debug info
REVLib.lib(SparkRelativeEncoder.obj) : warning LNK4099: PDB '' was not found with 'REVLib.lib(SparkRelativeEncoder.obj)' or at ''; linking object as if no debug info
REVLib.lib(SparkMaxAbsoluteEncoder.obj) : warning LNK4099: PDB '' was not found with 'REVLib.lib(SparkMaxAbsoluteEncoder.obj)' or at ''; linking object as if no debug info
REVLib.lib(SparkMaxAnalogSensor.obj) : warning LNK4099: PDB '' was not found with 'REVLib.lib(SparkMaxAnalogSensor.obj)' or at ''; linking object as if no debug info
REVLib.lib(SparkMaxLimitSwitch.obj) : warning LNK4099: PDB '' was not found with 'REVLib.lib(SparkMaxLimitSwitch.obj)' or at ''; linking object as if no debug info
REVLib.lib(SparkMaxPIDController.obj) : warning LNK4099: PDB '' was not found with 'REVLib.lib(SparkMaxPIDController.obj)' or at ''; linking object as if no debug info
REVLib.lib(SparkMaxRelativeEncoder.obj) : warning LNK4099: PDB '' was not found with 'REVLib.lib(SparkMaxRelativeEncoder.obj)' or at ''; linking object as if no debug info
REVLibDriver.lib(CANSparkMaxDriver.obj) : warning LNK4099: PDB '' was not found with 'REVLibDriver.lib(CANSparkMaxDriver.obj)' or at ''; linking object as if no debug info
REVLibDriver.lib(CANSparkMaxHeartbeat.obj) : warning LNK4099: PDB '' was not found with 'REVLibDriver.lib(CANSparkMaxHeartbeat.obj)' or at ''; linking object as if no debug info
REVLibDriver.lib(REVLibErrors.obj) : warning LNK4099: PDB '' was not found with 'REVLibDriver.lib(REVLibErrors.obj)' or at ''; linking object as if no debug info
REVLibDriver.lib(CANSparkMax.obj) : warning LNK4099: PDB '' was not found with 'REVLibDriver.lib(CANSparkMax.obj)' or at ''; linking object as if no debug info
REVLibDriver.lib(REVUtils.obj) : warning LNK4099: PDB '' was not found with 'REVLibDriver.lib(REVUtils.obj)' or at ''; linking object as if no debug info
REVLibDriver.lib(CANSparkMaxDriver.obj) : error LNK2019: unresolved external symbol _Thrd_sleep_for referenced in function "void __cdecl std::this_thread::sleep_until<struct std::chrono::steady_clock,class std::chrono::duration<__int64,struct std::ratio<1,1000000000> > >(class std::chrono::time_point<struct std::chrono::steady_clock,class std::chrono::duration<__int64,struct std::ratio<1,1000000000> > > const &)" (??$sleep_until@Usteady_clock@chrono@std@@V?$duration@_JU?$ratio@$00$0DLJKMKAA@@std@@@23@@this_thread@std@@YAXAEBV?$time_point@Usteady_clock@chrono@std@@V?$duration@_JU?$ratio@$00$0DLJKMKAA@@std@@@23@@chrono@1@@Z)  
C:\Users\chris\Documents\Robotics\RevLIbVS\build\exe\frcUserProgram\windowsx86-64\debug\frcUserProgram.exe : fatal error LNK1120: 1 unresolved externals


> Task :linkFrcUserProgramWindowsx86-64ReleaseExecutable FAILED
REVLibDriver.lib(CANSparkMaxDriver.obj) : error LNK2019: unresolved external symbol _Thrd_sleep_for referenced in function "void __cdecl std::this_thread::sleep_for<__int64,struct std::ratio<1,1000> >(class std::chrono::duration<__int64,struct std::ratio<1,1000> > const &)" (??$sleep_for@_JU?$ratio@$00$0DOI@@std@@@this_thread@std@@YAXAEBV?$duration@_JU?$ratio@$00$0DOI@@std@@@chrono@1@@Z)
C:\Users\chris\Documents\Robotics\RevLIbVS\build\exe\frcUserProgram\windowsx86-64\release\frcUserProgram.exe : fatal error LNK1120: 1 unresolved externals
1 Like

Just ran into this error. Thanks for the quick solution! :slight_smile:

One thing to note is that the next WPILib release will also require this as well, in addition to any other vendors upgrading. In general, we always require the latest VS release. Microsoft generally ships an update Mid February, and because of how our CI setup works, it is automatically upgraded. Which means that teams will also be required to fully update VS.

This only affects C++ teams. Generally Java teams will not be as affected by changes like this, although in cases they can be too.

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.