當我執行另一個C++程序(讓它稱爲B)時,我想打開一個.exe(讓它稱爲A),所以我有A和B在執行相同時間。無法在C++中使用shellExecute函數打開.exe
爲此,我使用此功能在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,而A不管理打開。 我得到的錯誤是這樣的:
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使用代碼::塊作爲IDE與GCC包括內置/ G ++編譯器和TDM-GCC的GDB調試器(版本4.9.2,32位,SJLJ)。
我在Windows 7 64位(企業和專業,都是相同的錯誤)這樣做。
而且,我不知道這是否是值得一說的,但我正在使用一個SFML庫,你可以在
sf::Texture texture;
看,我認爲這是主題相關的權限從打開文件一個程序,你打電話,但我不知道如何解決這個問題。
其實A和B自己完美地工作,但B無法打開A的意思。
我非常確定我已經使圖像不受限制,因爲我可以通過右鍵單擊屬性安全選項,但似乎不夠。
有人可以幫助我嗎?
我期望'player.png'不在當前目錄中。 – drescherjm
關於A和B,你是指「同時執行」是什麼意思?此外,請注意,使用ShellExec傳遞給進程的當前工作目錄將與您的父級程序不同(要驗證此操作只是將文件寫入程序arg [0]的路徑並查看其結束位置),以便加載相對路徑是罪魁禍首。無論如何,無論你想在這裏做什麼可能會更好地使用靜態庫而不是可執行文件來完成。 –