Подтвердить что ты не робот

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

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

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

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

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

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

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

4b9b3361

Ответ 1

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

Ответ 2

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