2010-08-01 66 views
0

我有python代码......但我如何在C++中执行它? 我对C++没有多少经验。我想要的是制作一个exe文件,将其作为自动运行放在CD中。它必须在我的cd中使用xulrunner.exe打开application.ini文件。由于路径在每台计算机上都有所不同,所以我可以做这样的事情。从当前目录打开一个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()system(),在Win32中getcwd()GetCurrentDirectory()

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

或许应该坚持为char缓冲区的字符串。因此,像(未经检验,未试过)

#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:错误:矛盾的声明 '诠释AC' 测试.cpp:3:错误:'ac'以前声明为'char ** ac' test.cpp:3:错误:声明'int ac' test.cpp:3:错误: char ** ac' test.cpp:4:error:'MAX_PATH'未在此范围内声明 test.cpp:5:错误:未在此范围内声明'path' test.cpp:5:错误: 'GetCurrentDirectory'未在此范围内声明 test.cpp:7:错误:'最终'未在此范围内声明 test.cpp:9:错误:'system'未在此范围内声明 – esafwan 2010-08-01 03:19:53

+0

错误原因可能是什么? – esafwan 2010-08-01 03:20:18

+0

我没有在编辑器中输入它或尝试编译 - 你需要知道*一些* C++才能使它工作。我纠正了主要的AC/AV。试试MAXPATH或者在那里贴一个大数字。尝试#包括 ---我只是想让你开始。 – 2010-08-01 03:22:30

1

我不能完全明白你在问什么,但你可能要在“系统”功能。这将调用平台的命令处理器来执行给定的命令。

如果您的所有文件(xulrunner.exe和application.ini)与自动运行的可执行文件位于同一目录中,那么您应该能够仅依赖工作目录是正确的,而不需要提供完整的路径。

例如:

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

这取决于你正在实施它的平台上,但在Windows(从C假设:\这是你在哪里),你需要浸入Windows API并使用CreateProcess。在Linux上,它将是系统或popen(在那里不是非常熟悉)。

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

如果您正在运行的EXE被称为是在当前工作目录(无论你的程序从启动),你可以简单地使用文件名(“xulrunner.exe”)作为名称。用“。\ xulrunner.exe”可能会更安全,但这更优先。您也可以指定一个子目录,甚至可以指定SetCurrentDirectory移动到另一个目录。

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