Скопировать приложение (.exe) в c ++ - PullRequest
0 голосов
/ 07 апреля 2020

Я начал использовать C ++, и у меня возникла проблема. Я никогда не использовал C ++ до , но я использовал C#.

Я хочу скопировать свое приложение, но не могу, потому что, если я получу путь к приложению с помощью char* path = __argv[0]; и скопирую файл, использующий CopyFile(path, anotherpath, TRUE); Я получаю ошибку компилятора:

аргумент типа "char *" несовместим с параметром типа "LPCTSTR"

Если я пытаюсь преобразовать с этим кодом:

char* path = __argv[0];
wchar_t wtext[20];
mbstowcs(wtext, path, strlen(path) + 1);
LPWSTR ptr = wtext;

Это тоже не работает.

И если я попытаюсь напечатать это:

cout << wtext;

, он показывает «случайные числа и буквы»

image

Я не знаю, как скопировать файл из char*, извините, но я нуб в C ++.

Кто-нибудь знает, как решить эту проблему?

1 Ответ

1 голос
/ 07 апреля 2020

Решение тривиально:

  • Включите поддержку Unicode, определив символы препроцессора _UNICODE и UNICODE (вы уже делаете это, судя по диагностике ошибок c).
  • Укажите точку входа Unicode с именем wmain (вместо main).
  • Либо получите доступ к аргументам командной строки из wmain, либо используйте __ wargv вместо из __argv.

Примечание. Передача имени исполняемого файла в качестве первого аргумента командной строки является соглашением , а не контрактом. Если вы хотите надежное решение, запросите имя исполняемого файла, используя, например, GetModuleFileName или спецификацию Microsoft c _get_wpgmptr расширение CRT.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...