Я хочу открыть .exe (позвонит ему), когда я запускаю другую программу на C++ (разрешает вызов B), поэтому у меня есть A и B в исполнении при том же время.Невозможно открыть .exe с помощью функции shellExecute в C++
Для этого я использую эту функцию в коде B:
HINSTANCE result;
result=ShellExecute(NULL,NULL,"d:\\Users\\bci\\Desktop\\Animation\\bin\\Release\\Animation2.exe",NULL ,NULL,SW_SHOWDEFAULT);
cout << "Result is " <<(int)result <<endl;
значение Результат 42, и А не удается открыть. Ошибка я получаю это:
Failed to open file "player.png": Unable to open file
Failed to load player spritesheet!
Это соответствует этой части A's кода:
// load texture (spritesheet)
sf::Texture texture;
if (!texture.loadFromFile("player.png"))
{
std::cout << "Failed to load player spritesheet!" << std::endl;
return 1;
}
A и B оба были построены с использованием кода :: Blocks как IDE с GCC/G ++ и отладчик GDB от TDM-GCC (версия 4.9.2, 32 бит, SJLJ).
Я делаю это в Windows 7 64 бит (предприятие и профессионал, обе ошибки).
Кроме того, я не знаю, стоит ли это говорить, но я использую библиотеку SFML в А, как вы можете видеть в
sf::Texture texture;
Я думаю, что это связано с каким-то разрешения на открытие файла из программа, которую вы вызываете, но я не уверен, как это решить.
Фактически A и B работают отлично самостоятельно, но B не может открыть A этими значениями.
Я уверен, что я сделал это изображение неограниченным, как я могу, с помощью правой кнопки мыши - свойства -> параметры безопасности, но этого не достаточно.
Может кто-нибудь помочь мне с этим?
Я ожидаю, что 'player.png' не находится в текущем каталоге. – drescherjm
Что касается A и B, что вы подразумеваете под «в исполнении в одно и то же время»?Кроме того, будьте осторожны, что текущий рабочий каталог, переданный процессу с помощью ShellExec, будет отличаться от вашей родительской программы (чтобы убедиться, что это просто напишите файл на путь в программе arg [0] и посмотрите, где он заканчивается), поэтому загрузка относительного пути может быть виновником. Независимо от того, что вы пытаетесь сделать здесь, лучше выполнить с использованием статической библиотеки вместо исполняемого файла. –