Linker issue when building with IL2CPP for UWP using Master configuration

When building our IL2CPP project, set to the Master configuration in visual studio, a Linker error occurs. We’re using the plugin Sqlite4Unity3D: GitHub - robertohuertasm/SQLite4Unity3d: SQLite made easy for Unity3d, which uses the visual studio plugin “SQLite for Universal Windows Platform” found here: SQLite for Universal Windows Platform - Visual Studio Marketplace.

The issue that we’re seeing is that under the Debug and Release configurations, the application compiles and runs, but when the Master configuration is selected the error “LNK1181: cannot open input file ‘sqlite3.lib’” occurs.

The property values for the Debug, Release, and Master configurations seem to be the same; all of them require sqlite3.lib, and none of them have differing locations for the lib files. I’m wondering what the differences are between Debug, Release, and Master that could be causing this issue.

After a bit more digging into the “SQLite for Universal Windows Platform” plugin, I found where the path to the libraries get set. It seems to be an issue with that plugin. Inside the plugin directory, I needed to edit the file: “\v0.8.0.0\ExtensionSDKs\SQLite.UWP.2015\3.19.2\DesignTime\CommonConfiguration\neutral\SQLite.UWP.2015.props”.

This line of code is used to set the path of the library, and it uses the PackageConfiguration to do that: “(FrameworkSDKRoot)\..\..\UAP\v0.8.0.0\ExtensionSDKs\SQLite.UWP.2015\3.19.2\DesignTime\$(PackageConfiguration)\$(PlatformTarget);(LibraryPath)”

I added this line to the block, to have the the “Master” configuration use the “Retail” libraries: “Retail”

This solution seems temporary though, as this file will have to be changed every time the plugin updates (which I can’t seem to turn off automatic updates for).

If anyone has a better and more permanent solution to this issue that’d be appreciated. Here’s the whole “Sqlite.UWP.2015.props” file for reference:

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <PackageConfiguration Condition="'$(Configuration)' == ''">Debug</PackageConfiguration>
    <PackageConfiguration Condition="'$(Configuration)' == 'Debug'">Debug</PackageConfiguration>
    <PackageConfiguration Condition="'$(Configuration)' == 'Release'">Retail</PackageConfiguration>
    <PackageConfiguration Condition="'$(Configuration)' == 'Master'">Retail</PackageConfiguration>
  </PropertyGroup>
  <PropertyGroup>
    <IncludePath>$(FrameworkSDKRoot)\..\..\UAP\v0.8.0.0\ExtensionSDKs\SQLite.UWP.2015\3.19.2\DesignTime\CommonConfiguration\Neutral;$(IncludePath)</IncludePath>
    <LibraryPath>$(FrameworkSDKRoot)\..\..\UAP\v0.8.0.0\ExtensionSDKs\SQLite.UWP.2015\3.19.2\DesignTime\$(PackageConfiguration)\$(PlatformTarget);$(LibraryPath)</LibraryPath>
    <PropertySheetDisplayName>SQLite.UWP.2015, 3.19.2</PropertySheetDisplayName>
  </PropertyGroup>
  <ItemDefinitionGroup>
    <Link>
      <AdditionalDependencies>sqlite3.lib;%(AdditionalDependencies)</AdditionalDependencies>
    </Link>
  </ItemDefinitionGroup>
</Project>

Which project fails to link? Is it the Il2CppOutputProject or the project that’s named after your game?

Came across this same issue. Found that the “SQLite for Universal Platform” only had configurations for Debug and Release as stated above. Since I also needed a configuration for Master build as required by Unity I was able to add it directly to the path of the library instead of modifying the props file. This means replacing $(PackageConfiguration) with the word Retail in the library path setting. This prevents you from having to change the props file every time the plugin updates.