170 похожих чатов

Внимание, вопрос. Скомпилил небольшой бинарь (консольное приложение) в Ms VC

2017. Всё что делает бинарь - получает путь до рабочего стола запустившего его юзера, создает на нём txt файл в котором лежит hostname и username. В целях теста запустил его на виртуалке с юзернеймом в русской раскладке и случилось злое чудо. Бинарь не запускается, требует MSVCPD1400.dll и еще кучу библиотек. От бинарника требуется запуск на любой win10 машине. В include только прекомпилированные заголовки и либы:
#include <Shlobj_core.h>
#include <windows.h>
#include <string>
#include <iostream>
Вопроса 2:
Как скомпилить полностью независимый от вышеуказанных либ бинарь, возможно ли это?
Вопрос второй, ка решать проблему кириллицы в LPCWSTR и прочих win32 типах?

24 ответов

26 просмотров

Видимо, надо собрать в релиз режиме.

Попробуй эти команды ввести, может поможет с кириллицей, хотя не уверен: SetConsoleOutputCP(1251); и SetConsoleCP(1251);

Agal1ar3pt- Автор вопроса
Пользователь 6284d
Попробуй эти команды ввести, может поможет с кирил...

так неизвестно какой будет юзернейм, в кириллице или в англ раскладке. Вычитал про wchat_t (двухбайтовый символ, должен схавать и иврит и японский, русский подавно), но вин32 функа поиска директории (SHGetFolderPathA) ругается на все кроме char в качестве пятого аргумента(переменной, куда путь собственно и пишется)

Agal1ar3pt- Автор вопроса
d7d1cd
Видимо, надо собрать в релиз режиме.

Поставил релиз, ругается на unresolved external symbol

Agal1ar3pt
так неизвестно какой будет юзернейм, в кириллице и...

Хз, после подключения команд выше, у меня принимал любое значение, и английское и русское. Хотя в моем случае скорее принимали это значение массивы. Сложно всё таки, нужно ещё учиться и учиться ...

Agal1ar3pt- Автор вопроса
Пользователь 6284d
Хз, после подключения команд выше, у меня принимал...

Сейчас разберусь с экстернал символами отвалившимися и проверю что выйдет на машине с русским юзернеймом

В студии надо указать нужный тип проекта, чтобы он дергал эти кучу .dll

Надо линковать стандартные библиотеки с и с++ статически, в виде объектных библиотек, а не библиотек импорта. Проблема кириллицы решать переводом консоли в кодировку ANSI. Вот как тут, но все 1251 #if defined(_WIN32) || defined(_WIN64) #pragma execution_character_set("utf-8") #include<windows.h> const auto _dummy_ = []() { SetConsoleCP(65001); SetConsoleOutputCP(65001); return 0; }(); #endif

Agal1ar3pt- Автор вопроса
Ilya Zviagin
Надо линковать стандартные библиотеки с и с++ стат...

Про ANSI понял, про процесс линковки нет, сейчас буду курить

Agal1ar3pt
Про ANSI понял, про процесс линковки нет, сейчас б...

https://docs.microsoft.com/ru-ru/cpp/build/reference/md-mt-ld-use-run-time-library?view=msvc-160 https://docs.microsoft.com/ru-ru/cpp/c-runtime-library/crt-library-features?view=msvc-160

Agal1ar3pt- Автор вопроса
Ilya Zviagin
https://docs.microsoft.com/ru-ru/cpp/build/referen...

А как решать проблему с external symbols? Это же проблема линковки насколько я понял?

Agal1ar3pt- Автор вопроса
Ilya Zviagin
Какую такую проблему?

Undefined external symbol trolololo@20

Agal1ar3pt
Undefined external symbol trolololo@20

Эту проблему решать как всегда — добавлением нужных объектных файлов и библиотек.

Agal1ar3pt
Undefined external symbol trolololo@20

Каких символов у тебя не хватает?

Agal1ar3pt- Автор вопроса
Ilya Zviagin
Каких символов у тебя не хватает?

unresolved external symbol __imp__SHGetFolderPathA@20 В коде есть if (SHGetFolderPathA(NULL, CSIDL_PROFILE, NULL, 0, path) == S_OK)

Agal1ar3pt
unresolved external symbol __imp__SHGetFolderPathA...

вставь после инклюдов #pragma comment(lib, "Shell32.lib")

Agal1ar3pt- Автор вопроса
Егор (Дима)
вставь после инклюдов #pragma comment(lib, "Shell3...

Всплыли error LNK2001: unresolved external symbol __CrtDbgReport error LNK2001: unresolved external symbol __free_dbg error LNK2001: unresolved external symbol __malloc_dbg

Agal1ar3pt
Undefined external symbol trolololo@20

Сказать линкеру где его найти

Agal1ar3pt
Всплыли error LNK2001: unresolved external symbol ...

Вот, сделай как тут пишут https://docs.microsoft.com/en-us/cpp/build/reference/md-mt-ld-use-run-time-library?view=msvc-160

Agal1ar3pt
unresolved external symbol __imp__SHGetFolderPathA...

Это вроде бы функция из библиотек Windows, она не должна была отключаться. Подключи обратно соотв. библиотеки если ты их отключил.

Егор (Дима)
вставь после инклюдов #pragma comment(lib, "Shell3...

Не надо так делать, надо подключать библиотеки явно, указывая линкеру.

Agal1ar3pt
Всплыли error LNK2001: unresolved external symbol ...

Ну очень странно. А что ты сдела-то?

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта