_ATL_APARTMENT_THREADED и _ATL_FREE_THREADED конфликт - PullRequest
2 голосов
/ 09 марта 2011

Я работаю на существующей C ++ COM DLL с VS2008.

компилятор говорит:
«Определено более одной глобальной модели потоков»

в моем StdAfx.hi получилdefine:
#define _ATL_APARTMENT_THREADED

Я инициализирую COM следующим образом:
CoInitialize(NULL);

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

есть идеи, почему я получаю сообщение компилятора?

спасибо juergen

Ответы [ 2 ]

0 голосов
/ 13 марта 2011

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

#ifdef _ATL_FREE_THREADED
#pragma message ("hi")
#endif

... между различными включаемыми файлами, чтобы посмотреть, сможете ли вы найти тот, который определяет этот макрос. Перед тем, как сделать это, проверили ли вы, что он не определен в свойствах проекта (как на уровне проекта, так и на уровне файла cpp)?

0 голосов
/ 09 марта 2011

Эти символы определены внутри atlbase.h и atldef.h, которые находятся вместе с другими заголовками ATL - вы можете посмотреть там и увидеть, что есть некоторая простая логика для определения, был ли уже установлен один из этих символов, и установки по умолчанию. .

...