2010-08-01 3 views
0

파이썬 코드가 있습니다 ... 어떻게 C++에서 할 수 있습니까? C++에 대한 많은 경험이 없습니다. 내가 원한다면 exe를 만들어 CD에 자동 실행되도록 할 수 있습니다. CD에서 xulrunner.exe로 application.ini 파일을 열어야합니다. 경로가 각 컴퓨터에서 달라 지므로 이런 식으로 할 것입니다.현재 dir에서 exe 열기 C++

import subprocess 
import os 
path= os.getcwd() 
final = path + '/xulrunner.exe ' + path + '/application.ini' 
print final 
os.system('final') 
subprocess.call(['C:\\Temp\\a b c\\Notepad.exe']) 

답변

1

os.system()는 Win32에서 getcwd()GetCurrentDirectory()

http://msdn.microsoft.com/en-us/library/aa364934(VS.85).aspx

아마 문자열 버퍼를 숯불에 충실해야하고, system()이다. 그래서, (테스트되지 않은, 해보지 않은)

#include <stdio.h> 

int main(int ac, char **av) { 
    char path[MAX_PATH+1]; 
    GetCurrentDirectory(MAX_PATH, path); 
    char final[MAX_PATH * 2 + 100]; 
    sprintf(final, "%s /xulrunner.exe %s/application.ini", path, path); 
    printf("%s", final); 
    system(final); 
    // not sure what the notepad call is for, probably another system call 
    return 0; 
} 
+0

Test.cpp에 같은 : 함수에서'INT 주 (INT, CHAR **) ' Test.cpp에 : 3 : 오류 : 충돌 선언'INT 교류 ' 테스트 .cpp : 3 : error : 'ac'는 이전의 선언을'char ** ac '로 가지고있다. test.cpp : 3 : 오류 : int ac의 선언 test.cpp : 3 : 오류 : 이전 선언과 충돌한다. char : ac ' test.cpp : 4 : 오류 :이 범위에서'MAX_PATH '가 선언되지 않았습니다. test.cpp : 5 : 오류 :이 범위에서'path '가 선언되지 않았습니다. test.cpp : 5 : 오류 : 'GetCurrentDirectory '는이 범위 내에서 선언되지 않았습니다 test.cpp : 7 : 오류 :'final'이이 범위에서 선언되지 않았습니다 test.cpp : 9 : 오류 :이 범위에서 'system'이 (가) 선언되지 않았습니다. – esafwan

+0

오류의 원인은 무엇입니까? – esafwan

+0

저는 이것을 에디터에 입력하지 않았거나 컴파일하려고 시도하지 않았습니다 - 작동시키기 위해서는 * * C++를 알아야 할 필요가 있습니다. 나는 main에서 ac/av를 정정했다. MAXPATH를 시도하거나 큰 번호를 붙이십시오. #include 을 시도해보십시오 --- 저는 당신을 시작 시키려고했습니다. –

1

내가 묻는 바를 잘 모르겠지만 '시스템'기능을 원할 수도 있습니다. 이렇게하면 주어진 명령을 실행하기 위해 플랫폼의 명령 프로세서가 호출됩니다.

모든 파일 (xulrunner.exe 및 application.ini)이 자동 실행 실행 파일과 같은 디렉토리에있는 경우 올바른 작업 디렉토리를 사용할 수 있어야하며 전체 파일을 줄 필요가 없습니다 통로. 예를 들어

:

system("xulrunner.exe application.ini"); 
1

그것은 당신이 그것을 구현하고있는 플랫폼에 따라 다릅니다 만, Windows에서 (는 C에서 가정 : 당신이 어디에 그건 \), 당신은 파고해야합니다 Windows API 및 CreateProcess를 사용하십시오. 리눅스에서는 시스템이나 popen (아주 낯 익은)이 아니다. 실행하고있는 EXE가 (당신의 프로그램에서 시작되는 곳) 현재 작업 디렉토리에있는 것으로 알려진 경우

http://msdn.microsoft.com/en-us/library/ms682425%28VS.85%29.aspx

, 당신은 단순히 이름으로 파일 이름 ("xulrunner.exe")를 사용할 수 있습니다 . ". \ xulrunner.exe"를 사용하면 더 안전 할 수 있지만 더 선호됩니다. 하위 디렉토리를 지정하거나 SetCurrentDirectory를 지정하여 다른 디렉토리로 이동할 수도 있습니다.

BOOL startedProgram = CreateProcess("xulrunner.exe", "application.ini", [fill in other options as you need]);