Проблемы компиляции при добавлении пакета protobuf в существующий проект - PullRequest
0 голосов
/ 11 октября 2019

Я создал пакет nuget для C ++ protobuf для версии 3.10.0 и добавил его в свой существующий проект vs2019, который прекрасно скомпилировался перед его добавлением. После добавления пакета protobuf я получаю большое количество неразрешенных внешних ошибок, которые кажутся несвязанными:

1> libconcrtd.lib (FreeVirtualProcessorRoot.obj): ошибка LNK2001: неразрешенный внешний символ _purecall 1> libconcrtd.lib (ThreadProxy.obj): ошибка LNK2001: неразрешенный внешний символ _purecall 1> libconcrtd.lib (UMSSchedulerProxy.obj): ошибка LNK2001: неразрешенный внешний символ _purecall 1> libconcrtd.lib (UMSFreeVirtualProcessorRoot.obj): _connure 1.lib (UMSThreadScheduler.obj): ошибка LNK2001: неразрешенный внешний символ _purecall 1> libconcrtd.lib (TransmogrifiedPrimary.obj): ошибка LNK2001: неразрешенный внешний символ _purecall 1> libconcrtd.lib (внешний символ. Chores.obj1): ошибка NN_purecall 1> libconcrtd.lib (VirtualProcessorRoot.obj): ошибка LNK2001: неразрешенный внешний символ _purecall 1> libconcrtd.lib (InternalContextBase.obj): ошибка LNK2001: неразрешенный внешний символ _purecall 1> libconcrtd.lib (схемаroupBase.obj): ошибка LNK2001: неразрешенный внешний символ _purecall 1> libconcrtd.lib (ExternalContextBase.obj): ошибка LNK2001: неразрешенный внешний символ _purecall. ,.

Файл моих целей выглядит следующим образом:

<?xml version="1.0" encoding="utf-8"?><Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
    <PropertyPageSchema Include="$(MSBuildThisFileDirectory)package.xml" />
</ItemGroup>

<ItemDefinitionGroup>
    <ClCompile>
        <AdditionalIncludeDirectories>$(MSBuildThisFileDirectory)include\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ClCompile>
</ItemDefinitionGroup> 
<!-- static libraries -->

<!-- x64 -->
<ItemDefinitionGroup Condition="'$(Platform)' == 'x64' And $(Configuration.IndexOf('Release')) != -1 And '$(Linkage-protobuf)' == 'static'">
    <Link>
        <AdditionalDependencies>$(MSBuildThisFileDirectory)lib\x64\Release\libprotobuf.lib;$(AdditionalDependencies)</AdditionalDependencies>
    </Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Platform)' == 'x64' And $(Configuration.IndexOf('Debug')) != -1 And '$(Linkage-protobuf)' == 'static'">
    <Link>
        <AdditionalDependencies>$(MSBuildThisFileDirectory)lib\x64\Debug\libprotobufd.lib;$(AdditionalDependencies)</AdditionalDependencies>
    </Link>
</ItemDefinitionGroup>

<!-- Win32 -->
<ItemDefinitionGroup Condition="'$(Platform)' == 'Win32' And $(Configuration.IndexOf('Release')) != -1 And '$(Linkage-protobuf)' == 'static'">
    <Link>
        <AdditionalDependencies>$(MSBuildThisFileDirectory)lib\Win32\Release\libprotobuf.lib;$(AdditionalDependencies)</AdditionalDependencies>
    </Link>
</ItemDefinitionGroup>

<ItemDefinitionGroup Condition="'$(Platform)' == 'Win32' And $(Configuration.IndexOf('Debug')) != -1 And '$(Linkage-protobuf)' == 'static'">
    <Link>
        <AdditionalDependencies>$(MSBuildThisFileDirectory)lib\Win32\Debug\libprotobufd.lib;$(AdditionalDependencies)</AdditionalDependencies>
    </Link>
</ItemDefinitionGroup>    

Подобные вещи работали раньше, но на этот раз в моем проекте есть несколько вещей, отличающихся от того, что яне могу не думать, что это применимо. Вот мои настройки проекта (при условии отладки / x64): Protobuf статически связан Linker-> Input-> Дополнительные зависимости: Nafxcw.lib; Libcmt.lib Linker-> Input-> Ignore Specific Default Library Nafxcw.lib; Libcmt.lib C/ C ++ -> Препроцессор (добавлено) WIN32_LEAN_AND_MEAN (для устранения проблем с переопределением winsock) C / C ++ -> Генерация кода-> Библиотека времени выполнения -> / MTd

Я с удовольствием предоставлю любую дополнительную информацию, которую вы все считаете подходящей,Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...