Стратегии многоядерных сборок (/MP), которые используют #import
Я работаю над новой конфигурацией решения для нашего большого проекта VС++, используя VS 2008. Я бы хотел, чтобы эта конфигурация использовала флаг построения многоядерной сборки /MP.
Тем не менее, функция "#import" для создания классов COM-оболочки посыпана кодовой базой, и эта функция не поддерживается при использовании /MP.
Я понимаю, почему #import не работает, Я хочу знать, столкнулся ли кто-нибудь с этой проблемой и как они работали над ней?
Я делаю следующее:
- Не использовать флаг /MP для небольших или проектов. (возможно, я вернусь к ним позже).
- Убрал #import и заменил его более стандартным заголовком, созданным с помощью MIDL (#include). Это всего лишь вариант в нескольких местах, которые легко конвертировать в старую школу COM.
- Создайте новый проект, который # импортирует оставшиеся библиотеки. Сделайте это сначала. # Включить .tlh файлы, которые он создает во всех местах, где #imported ранее.
Мне любопытно, есть ли у кого любые другие предложения? Кроме того, в последней точке (создание нового проекта и использование там только #import) - если вы это сделали что-то вроде этого, , как вы это сделали? Какой тип проекта, как выглядел "источник", где вы выводили файлы? Как вы их включили? (вы знаете, сделайте все мышление для меня!)
Ответы
Ответ 1
У меня есть проект с двумя исходными файлами, которые #import тот же файл. При компиляции с /MP он иногда получает ошибку отказа в доступе, поскольку оба исходных файла пытались создать .tlb одновременно. Я исправлю это, включив предварительно скомпилированные заголовки и добавив #import в предварительно скомпилированный исходный файл заголовка.
Ответ 2
Вы можете использовать параметр /MP для проекта в целом, а затем сделать исключение для одного файла с помощью опции /MP1.