0

我想使用 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 );   
 }

请帮我。非常感谢。

4

2 回答 2

1

您应该在第二个参数 ( LPTSTR lpCommandLine) 中填写您希望看到 gamside.exe 的命令行(例如,将您的文件作为第一个参数传递)。您需要在那里指定的内容取决于 gamside 程序的规范(这是 WETF)。

顺便说一句:在您的问题标题中使用“链接”一词对该主题有点误导,因为 C++ 上下文中的“链接”通常意味着将库链接到您的可执行文件,而不是从中调用另一个可执行文件。

于 2012-06-21T16:52:39.300 回答
1

从其他编程环境调用 GAMS 模型求解器的一般问题在 GAMS 帮助页面和讨论列表中得到了很好的处理。见,例如

http://interfaces.gams-software.com/doku.php?id=env:executing_gams_from_other_environmentshttp://interfaces.gams-software.com/doku.php?id=env:spawning_gams_from_visual_c

您可能需要调用 gams.exe 而不是 gamside.exe,因为您不需要 IDE。从命令行调用 gams.exe 的语法有据可查。

于 2012-12-27T18:02:49.597 回答