cl.exe per CreateProcess starten



  • Hallo,

    ich möchte die cl.exe per CreateProcess starten.

    Code:

    #include <windows.h>
    
    int main()
    {
    	STARTUPINFO startup_info;
    	ZeroMemory(&startup_info,sizeof(STARTUPINFO));
    	startup_info.cb=sizeof(STARTUPINFO);
    	PROCESS_INFORMATION process_information;
    	ZeroMemory(&process_information,sizeof(PROCESS_INFORMATION));
    	CreateProcess("C:\\Programme\\Microsoft Visual Studio 9.0\\VC\\bin\\cl.exe",
    		NULL,
    		NULL,
    		NULL,
    		FALSE,
    		CREATE_UNICODE_ENVIRONMENT,
    		"PATH=C:\\Programme\\Microsoft Visual Studio 9.0\\Common7\\IDE\0\0",
    		NULL,
    		&startup_info,
    		&process_information);
    	DWORD d=GetLastError();
    	return 0;
    }
    

    Funzt soweit (GetLastError()==0), aber ich bekomme die Fehlermeldung:

    "Die Anwendung konnte nicht richtig initalisiert werden (0xc0150004). Klicke Sie auf "OK", um die Anwendung zu beenden."

    es wird kein cl.exe-Prozess erstellt.

    Was ist falsch?

    Danke

    PS: der Common7-Ordner muss in PATH rein, damit alle Import-DLLs gefunden werden.



  • Komisch - folgender Batch aufruf lkappt auch ohne Probleme:

    set PATH=C:\Programme\Microsoft Visual Studio 9.0\Common7\IDE;C:\Programme\Microsoft Visual Studio 9.0\VC\BIN;%PATH%
    cl
    pause
    


  • setze vor aufruf von cl einfach den pfad per

    BOOL SetEnvironmentVariable(
        LPCTSTR lpName,	// address of environment variable name  
        LPCTSTR lpValue 	// address of new value for variable 
       );
    

    (vergiss nicht den pfad vorher zu holen und die neuen pfade hinten anzuhängen)

    Der pfad wird nur im Anwendungskontext geändert.


  • Mod

    Benutze mal DEPENDS.EXE und kontrolliere mal welche weiteren Pfade evtl. im Path drin sein müssen.

    Das einfachste dürfte es jedoch sein, einfach zuvor dafür zu sorgen das alle Environment Werte aus VCVARS32.BAT gesetzt werden.


Anmelden zum Antworten