__targv имеет значение NULL в моем приложении MFC для Windows. argc == 1
У меня есть настройки Windows приложения следующим образом: Debug - создает exe-файл, который статически связывает библиотеки, которые он использует Release - создает exe-файл, который ссылается на DLL
Я только что создал версию релиза, единственное отличие состоит в том, что одна из используемых библиотек теперь создается как DLL.
Когда я выполняю свое приложение, при каждом обращении к аргументам командной строки оно падает. Это связано с тем, что __targv имеет значение NULL, а argc == 1.
Кто-нибудь сталкивался с этим раньше?
2 ответа
Первый параметр в __targv - это путь и имя текущего исполняемого файла.
Вот почему количество аргументов равно 1. Попробуйте напечатать на экране содержимое __targv[0]
, вы должны увидеть что-то вроде C:/.../.../foobar.exe
(где .../...
путь к вашему исполняемому файлу и foobar.exe
быть exe)
Спасибо всем за предложения и помощь.
Если кому-то интересно, вот несколько закрытие проблемы. Кроме того, если у кого-то еще есть эта проблема, это для них:
При обработке создания DLL мне пришлось переключить библиотеку времени выполнения C на MD (тип DLL) и (я думал) конфигурацию связывания MFC (UseOfMFC).
Я ошибочно смешал типы UseOfMFC, которые, как мне кажется, портили _targv, а также вызывали исключения при вызове любых функций AFX.
Я пересмотрел проект, изменив все конфигурации на использование библиотеки DLL типа CRT, и оставил UseOfMFC без изменений. Это решило проблемы, которые у меня были.