将c ++链接到gams软件

时间:2012-06-21 15:17:59

标签: c++ gams-math

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

请帮帮我。非常感谢。

2 个答案:

答案 0 :(得分:1)

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

BTW:在你的问题标题中使用术语“链接”对于这个主题有点误导,因为在C ++的上下文中“链接”通常意味着将库链接到你的可执行文件,而不是从它调用另一个可执行文件。 / p>

答案 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的语法已有详细记录。