Стратегии для многоядерных сборок (/ MP), использующих #import

Я работаю над новой конфигурацией решения для нашего большого проекта VC++ с использованием VS 2008. Я бы хотел, чтобы эта конфигурация использовала флаг многоядерной сборки / МП.

Однако функция "#import" для создания классов-оболочек COM присутствует во всей кодовой базе, и эта функция не поддерживается при использовании / MP.

Я понимаю, почему #import не работает, Я хочу знать, сталкивался ли кто-нибудь с этой проблемой и как они ее решали?

Я делаю следующее:

  • Не используйте флаг / MP для небольших проектов или справки вне. (может быть, я вернусь к ним позже)
  • Удален #import и заменен более стандартным заголовком, генерируемым MIDL (#include). Это вариант только в нескольких местах, которые легко преобразовать в старый COM.
  • Создайте новый проект, который # импортирует оставшиеся библиотеки. Сначала сделайте эту сборку. # Включите файлы .tlh, которые он создает, во все места, которые # импортировались ранее.

Мне любопытно, есть ли у кого-нибудь любые другие предложения?. Также на последняя точка (создание нового проекта и использование #import только там) - если вы сделали что-то вроде этого, как ты это сделал? Какой тип проекта, как выглядел "исходник", где был вы выводите файлы? Как вы их включили? (вы знаете, думайте за меня!)

ваш последний вариант кажется лучшим способом сделать это, если вам нужны многоядерные сборки - он согласован и не тратит впустую работу. Извините, что я не могу помочь с подробностями об этом,

Tim 31.10.2008 23:45

Спасибо за комментарий. Оказывается, мне понадобится несколько этапов генерации tlh на разных этапах сборки (почти безнадежная битва). Я отложил это - моя текущая задача - отказаться от VSS.

Aardvark 03.11.2008 03:33

Вот ваш ответ stackoverflow.com/questions/650578/…

Rolf Kristensen 04.11.2011 16:03
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
21
3
6 160
2

Ответы 2

У меня есть проект с двумя исходными файлами, которые # импортируют один и тот же файл. При компиляции с / MP иногда возникала ошибка отказа в доступе, поскольку оба исходных файла пытались создать .tlb одновременно. Я исправляю это, включив предварительно скомпилированные заголовки и добавив #import в исходный файл предварительно скомпилированных заголовков.

Это сработало для меня. Не уверен, есть ли недостатки, но пока я доволен. Спасибо.

criddell 12.07.2010 19:56

Вы можете использовать параметр / MP для всего проекта, а затем сделать исключение для отдельного файла с помощью параметра / MP1.

В VS 2017 просто отключите / MP для файлов, содержащих #imports

Brett 28.04.2019 21:15

Другие вопросы по теме