Ответ 1
Попробуйте использовать (например, окружение cuobjdump.exe путь с "
, правильно экранированный в C++ как \"
):
system("\"C:\\program files\\nvidia gpu computing...\\cuobjdump.exe\" --dump-cubin C:\\..\\input.exe");
Я новичок в программировании C++ под Windows. Я пытаюсь выполнить команду say cuobjdump
в коде C++, используя функцию system()
:
system("C:\\program files\\nvidia gpu computing...\\cuobjdump.exe --dump-cubin C:\\..\\input.exe");
вывод:
Usage : cuobjdump [options] <file>
Затем следует список опций cuobjdump.
Когда я запускаю эту программу, я всегда получаю опции справки cuobjdump, отображаемые в командной строке. Как будто системный вызов не анализирует имя файла. Что я делаю не так? Я получаю тот же результат при использовании createprocess. Параметры --dump-cubin
ошибку, как будто я опечатал ее.
Попробуйте использовать (например, окружение cuobjdump.exe путь с "
, правильно экранированный в C++ как \"
):
system("\"C:\\program files\\nvidia gpu computing...\\cuobjdump.exe\" --dump-cubin C:\\..\\input.exe");
system("cuobjdump --dump-cubin path\filename.exe");
Это \f
интерпретируется компилятором как escape-последовательность строки, попробуйте path\\filename.exe
Наиболее очевидно, что \
является escape-символом в строках C/C++, поэтому его нужно удвоить, если вы хотите использовать его буквально.
system("cuobjdump --dump-cubin path\\filename.exe");
Предполагая, что path
правильный, вы должны использовать double \\
внутри строк для представления единственного \
.
Я предлагаю вам использовать CreateProcess, или ShellExecute/ShellExecuteEx, поскольку вы работаете в Windows. system
и ShellExecute
в конечном счете вызывает CreateProcess
только.