__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 без изменений. Это решило проблемы, которые у меня были.

Другие вопросы по тегам