Не все проекты в рамках одного решения видят пакет NuGet - PullRequest
0 голосов
/ 13 января 2020

У меня есть решение C ++, в котором есть два проекта. Один проект генерирует библиотеку .lib, а другой использует ее и генерирует исполняемый файл .exe в Visual Studio 2019. Первый проект использует pthread, и у них обоих в своих свойствах есть путь к библиотеке pthread.

Я хотел перейти от «внешней» библиотеки pthread, чтобы использовать библиотеку от NuGet. Я скачал pthread из NuGet и удалил путь из библиотеки exteranl из свойств обоих проектов.

В результате первый проект компилируется без проблем, но второй проект завершается неудачей из-за:

Ошибка C1083 Не удается открыть включаемый файл: 'pthread.h': Нет такого файла или каталога

Кроме того, при открытии свойств для обоих проектов в свойствах первого проекта I видно, что категории «Основные настройки проекта» и «Связанные пакеты» появились, но они не отображаются во втором проекте.

Как мне сделать так, чтобы оба проекта могли использовать пакет NuGet?

1 Ответ

0 голосов
/ 14 января 2020

Кроме того, при открытии свойств для обоих проектов в свойствах первого проекта я вижу, что категории «Основные параметры проекта» и «Связанные пакеты» появились, но они не отображаются во втором проекте.

Как мне сделать так, чтобы оба проекта могли использовать пакет NuGet?

Проблема в том, что вы не устанавливаете пакет nuget pthreads во второй проект в то же время. Использование Project Reference или любого другого для C ++ не скопирует файл pthread.h во второй проект.

Я думаю, вы просто установите пакет nuget с именем pthreads в проект библиотеки lib, а затем .exe проект ссылается на проект lib. В этой ситуации файл pthread.h не будет копироваться из первого проекта во второй проект, который действительно отличается от проектов .Net.

На самом деле , вы должны установить пакет nuget в каждый проект, который его использует.

Решение

Таким образом, чтобы решить эту проблему, вы должны установить пакет nuget pthreads во второй проект одновременно. Щелкните правой кнопкой мыши на проекте (в котором нет меню Referenced Packages) -> выберите Manage NuGet Packages и найдите для установки nuget pthreads .

Кроме , если все проекты решения используют этот пакет nuget, вы можете щелкнуть правой кнопкой мыши на решение -> выбрать Manage NuGet Packages for Solution...

enter image description here

Кроме того , когда вы создаете проект и сталкиваетесь с этой ошибкой Ошибка C2011 'timespe c': переопределение типа 'struct' Вы можете добавить этот код в верхней части #include<pthread.h>:

#define HAVE_STRUCT_TIMESPEC

enter image description here

Надеюсь, что это может помочь вам.

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