Quiero desactivar excepciones en mi aplicación C++, compilada bajo MSVC. He cambiado la opción Habilitar excepciones de C++ a NO, pero recibo advertencias para que use la opción/Ehsc, que no quiero.¿Puedo deshabilitar excepciones en AWL?
No tengo try/catch blocks en mi código, pero utilizo STL. He encontrado que el uso de _HAS_EXCEPTIONS definición macro = 0 debe desactivar las excepciones en STL, pero todavía estoy consiguiendo advertencia como:
warning C4275: non dll-interface class 'stdext::exception' used as base for dll-interface class 'std::bad_typeid' see declaration of 'stdext::exception' see declaration of 'std::bad_typeid'
¿Hay alguna manera cómo apagar las excepciones es STL?
Nota: en mi código también quiero desactivar las opciones de RTTI. Recibo las mismas advertencias sin importar si el RTTI está encendido o apagado.
Lo que no entiendo es cuando se usa/MD o/MDd, ¿por qué necesitamos el _STATIC_CPPLIB? De lo que he podido leer hace que el código use libcmt.lib y no msvcrtd.lib. El objetivo de usar/MD es tener bibliotecas vinculadas dinámicamente y no bibliotecas vinculadas estáticas. Agregar _STATIC_CPPLIB parece frustrar el propósito de usar el indicador/MD. – gnash117
_STATIC_CPPLIB está en desuso en MSVC 2010, por lo que usarlo con MSVC 2010 simplemente reemplazará un conjunto de advertencias por otro. – gnash117
gnash117, MSDN para MSVC2008 dice que al usar la definición del preprocesador _STATIC_CPPLIB, su aplicación vincula libcmt.lib en lugar de msvcprt.lib, pero sigue vinculándose dinámicamente con el CRT principal a través de msvcrt.lib. – Rom098