[SOLVED] QProcess não inicia no Windows XP
-
Pronto... "MSDN.com says that this function is only available on Windows Vista and later" portanto... Qt nao suporta XP? :)
-
Mas acho que a função InitOnceExecuteOnce não é usada pelo Qt.
Dei uma olhada nos fontes do Qt (4.8 e 5.2) e não achei uso desta função pelo Qt. Ele usa a CreateProcess para iniciar processos.
Como você já testou com o notepad, não me parece um problema diretamente do Qt.
Este executável que você está tentando rodar.... posso dar uma olhada nele.
-
Olá novamente,
Pra tira teima, instalei tudo no xp e compilei o launcher lá. Mesmo problema...De fato outros executáveis rodam, mas este que está dando problema não dava quando o launcher era escrito em Lazarus, só quando o refiz em Qt...
o executável é este http://goo.gl/AymzjH
vlw
-
-
Esqueci de perguntar... No XP você está usando o VS2008 para compilar, certo?
Você pode usar o Dependency Walker (http://www.dependencywalker.com/) para verificar as dependências do EXE, e ver se está quebrado algo. É muito estranho mesmo você rodar o EXE "manualmente" e funcionar, e pelo Qt não.
Um coisa que você pode fazer com o Dependency Walker é fazer um "profiling": Rodar o programa pelo Dependency Walker" e ele analisa o carregamento de outras DLL's que ocorreram durante o programa (e não no início que é o normal). Pode tentar fazer isso também com o seu Launcher.
-
Qt 32 bits com Mingw 32 bits
Vou experimentar. Quero testar também com outras chamadas... enfim, tenho trabalho pro fds :-)
-
Criei um HelloWorldQT no netbeans, roda normal, abre a janelinha e tal. Então adicionei uma chamada CreateProcess() que é executada quando eu escrevo no textbox, e tudo correu lindamente...
@if (CreateProcessA((LPSTR) "C:/caminhodo/maldito.exe", NULL,
NULL, NULL, FALSE, 0, NULL,
NULL, &StartupInfo, &ProcessInfo)) {
std::cout << "OK" << std::endl;
WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
CloseHandle(ProcessInfo.hThread);
CloseHandle(ProcessInfo.hProcess);
std::cout << "OK2" << std::endl;
}@Portanto... isso é ou não um bug do Qt? :)
Update:
Copiei o código inteiro do QProcessPrivate::startDetached() que tem no qprocess_win.cpp do Src do Qt e continua funcionando... :-/
-
Ok, agora pra piorar... uso o QProcess dentro do HelloWorld (conforme o codigo do meu primeiro post) e funciona... :-(
Já estou ficando doido...
-
Resolvido... era um dll do jogo que foi compilado no W7... recompilando usando o MSVC Express dentro do XP resolve o problema...
Ufa :)