__targv es NULL en mi aplicación de Windows MFC. argc == 1

Tengo una configuración de aplicación de Windows de la siguiente manera: Depurar: crea un archivo ejecutable que vincula estáticamente las bibliotecas que usa.

Acabo de crear la versión de lanzamiento, la única diferencia es que una de las bibliotecas que se usa ahora se está construyendo como una DLL.

Cuando ejecuto mi aplicación, cada vez que se accede a los argumentos de la línea de comandos, se bloquea. Esto se debe a que __targv es NULL, pero argc == 1.

Alguien ha encontrado antes?

preguntado el 16 de mayo de 11 a las 17:05

Muestre cómo declaró el main y cuéntenos más sobre el entorno utilizado (versión MSVC, configuración de la solución, etc.). -

¿Qué pasa si agregas un argumento? -

2 Respuestas

El primer parámetro en __targv es la ruta y el nombre del ejecutable actual.

Es por eso que el recuento de argumentos es 1. Intente imprimir en pantalla el contenido de __targv[0], deberías ver algo como C:/.../.../foobar.exe (dónde .../... es la ruta a su ejecutable y foobar.exe siendo el exe)

contestado el 16 de mayo de 11 a las 21:05

Entonces, ¿por qué __targv es NULL frente a tener datos en __targv [0]? - Joe

¿Podría publicar algo de su código y salida para que podamos ver lo que realmente está sucediendo? - ALOToverflow

Gracias a todos por las sugerencias y ayuda.

Si alguien está interesado, aquí hay un cierre del problema. Además, si alguien más tiene este problema, esto es para ellos:

En el proceso de creación de la DLL, tuve que cambiar la biblioteca de tiempo de ejecución de C a MD (tipo DLL) y (pensé) configuración de vinculación MFC (UseOfMFC).

Había mezclado por error los tipos de UseOfMFC, lo que creo que estaba arruinando _targv, además de causar excepciones al llamar a cualquier función de AFX.

Volví a visitar el proyecto, cambié todas las configuraciones para usar el tipo CRT de DLL y dejé el UseOfMFC intacto. Esto solucionó los problemas que estaba teniendo.

Respondido el 15 de junio de 11 a las 21:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.