__targv имеет значение NULL в моем приложении MFC для Windows.argc == 1 - PullRequest
2 голосов
/ 16 мая 2011

У меня есть настройки Windows приложения следующим образом: Отладка - создает исполняемый файл, который статически связывает библиотеки, которые он использует Release - создает exe-файл, который ссылается на DLL

Я только что создал версию выпуска, единственное отличие состоит в том, что одна из используемых библиотек теперь создается как DLL.

Когда я выполняю свое приложение, при каждом обращении к аргументам командной строки оно падает. Это связано с тем, что __targv имеет значение NULL, а argc == 1.

Кто-нибудь сталкивался с этим раньше?

Ответы [ 2 ]

2 голосов
/ 16 мая 2011

Первый параметр в __targv - это путь и имя текущего исполняемого файла.

Вот почему количество аргументов равно 1. Попробуйте напечатать на экране содержимое __targv[0], вы должны увидеть что-то вроде C:/.../.../foobar.exe (где .../... - путь к вашему исполняемому файлу, а foobar.exeБыть бывшим)

1 голос
/ 15 июня 2011

Спасибо всем за предложения и помощь.

Если кому-то интересно, вот несколько закрытие проблемы.Кроме того, если у кого-то еще есть эта проблема, это для них:

При обработке создания DLL мне пришлось переключить библиотеку времени выполнения C на MD (тип DLL) и (я думал) MFC-связываниеконфигурация (UseOfMFC).

Я ошибочно смешал типы UseOfMFC, которые, как мне кажется, портили _targv, а также вызывали исключения при вызове любых функций AFX.

Я повторно посетил проект, изменив все конфигурациик использованию библиотеки DLL типа CRT и оставил UseOfMFC нетронутым.Это устранило проблемы, которые у меня были.

...