我想使用createprocess()函数将c ++链接到GAMS软件。我使用了这段代码,但它只是打开了GAMS软件。我希望程序在打开GAMS软件后自动运行file.gms:
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));
if(CreateProcessW(L"C:\\PROGRA~1\\gams23.3\\gamside.exe",NULL,NULL,NULL,false,0,NULL,NULL,&si,&pi))
{
WaitForSingleObject(pi.hProcess, 10000 );
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
}
请帮帮我。非常感谢。
答案 0 :(得分:1)
您应该使用要查看gamside.exe的命令行填写第二个参数(LPTSTR lpCommandLine
)(例如,将您的文件作为第一个参数传递)。您需要指定的内容取决于gamside程序的规范(WETF)。
答案 1 :(得分:1)
在GAMS帮助页面和讨论列表中可以很好地处理从其他编程环境调用GAMS模型求解器的一般问题。 参见,例如
http://interfaces.gams-software.com/doku.php?id=env:executing_gams_from_other_environments 要么 http://interfaces.gams-software.com/doku.php?id=env:spawning_gams_from_visual_c
您可能想要调用gams.exe而不是gamside.exe,因为您不需要IDE。从命令行调用gams.exe的语法已有详细记录。