Windows - VC ++ - «_ASSERTE» нельзя использовать в статической сборке - PullRequest
1 голос
/ 18 февраля 2011

Я пытаюсь скомпилировать код vc ++ в статическом режиме (используя / MT) в visual studio-2008. Но я получаю следующую ошибку.

error Please use the /MD switch for _AFXDLL builds

Я почти перепробовал все варианты. Ошибки связаны с макросом "_ASSERTE". Но я не могу удалить эти макросы, как сказал мой суперординат. Любая помощь будет награждена большим количеством благодарностей

Ответы [ 2 ]

4 голосов
/ 02 мая 2011

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

Ваши сценарии сборки или исходный код являются # define-ing _AFXDLL, который сообщает MFC, что вы планируете использовать версию MFC для DLL. Что требует от вас использования DLL-версии CRT. Но ключ / MT вводит статическую версию CRT.

Я настоятельно рекомендую использовать ключ / MD для использования библиотеки CRT DLL, а также библиотеки MFC. Вы не объясняете, почему вы пытаетесь использовать / MT, но это очень редко правильный выбор.

В качестве альтернативы, если вы фиксируете маршрут / MT, вам не следует определять _AFXDLL.

Наконец, есть небольшой шанс, что вы вообще не собираетесь использовать MFC. В этом случае прекратите включать заголовки MFC (afx * .h), и ошибка исчезнет.

Martyn

0 голосов
/ 18 февраля 2011

Вам нужно будет создать собственную версию _ASSERTE, которая не вызывает _CrtDbgReportW, а скорее вызывает вашу собственную функцию отчетности. Проблема заключается в использовании _CrtDbgReportW внутри макроса и ничего больше.

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