将 C++ 链接到 GAMS 软件

linking c++ to gams software

本文关键字:GAMS 软件 链接 C++      更新时间:2023-10-16

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

请帮助我。非常感谢。

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

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

从其他编程环境调用 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 的调用语法有据可查。