Как пути к файлам / каталогам выводятся из исполняемого файла в Windows? - PullRequest
0 голосов
/ 05 марта 2019

Когда мы указываем путь к файлу или исполняемому файлу в исходном коде C ++, как он разрешается, когда объектные файлы для исходного кода упаковываются в исполняемый файл?

Например, если бы я использовал _popen в моей программе и хотел запустить другой исполняемый файл, как бы я указал путь к этому исполняемому файлу.

Вот что я попробовал:

  1. Поместите внешний исполняемый файл в тот же каталог, что и исходный код. Код: работает должным образом в режиме отладки в Visual Studio.
  2. Поместите внешний исполняемый файл в каталог Debug / Release проект, то исполняемый файл который я строю не увидит внешний исполняемый файл, который я пытаюсь вызвать, используя _popen.

В мире java я мог вывести файл jar как другую файловую систему, и я мог читать пути так же, как я делал бы это в любой другой файловой системе.

Извините, если вопрос немного грубоват. Я только что приступил к разработке приложений для Windows с использованием Visual C ++, будучи веб-разработчиком Java / Ruby. Поэтому я даже не могу найти правильные ключевые слова для поиска в Интернете.

1 Ответ

0 голосов
/ 05 марта 2019

Надеюсь, что это скомпилировано, это близко:

TCHAR szExePath[MAX_PATH];
GetModuleFileName(0, szExePath, _countof(szExePath)); // 0 for handle is the process handle shortcut for this API

TCHAR szDrive[MAX_PATH] szDir[MAX_PATH]
_tsplitpath(szExePath, szDrive, szDir, NULL, NULL);

TCHAR szNewExePath;
_tmakepath(szNewExePath, szDrive, szDir, _T("numerodos"), _T(".exe")); // change numerodos do something real

TCHAR flags  = _T("wt"); // or whatever
_popen(szNewExePath, flags);

// really, on Windows I'd probably use CreateProcess
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...