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

2番目のパラメーター(LPTSTR lpCommandLine)に、gamside.exeを表示するコマンドラインを入力する必要があります(たとえば、ファイルを最初の引数として渡す)。そこで指定する必要があるのは、gamsideプログラムの仕様によって異なります(これはWETFです)。

ところで:質問のタイトルで「リンク」という用語を使用すると、このトピックについて少し誤解を招く可能性があります。C++のコンテキストでの「リンク」は通常、ライブラリを実行可能ファイルにリンクすることを意味し、ライブラリから別の実行可能ファイルを呼び出すことを意味しないためです。

于 2012-06-21T16:52:39.300 に答える
1

This general question of invoking the GAMS model solver from other programming environments is well-handled on the GAMS help pages and discussion list. See, e.g.

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

You may want to invoke gams.exe rather than gamside.exe since you do not need the IDE. The calling syntax for gams.exe from the command line is well-documented.

于 2012-12-27T18:02:49.597 に答える