Need help with basic spawn command [message #54079] |
Wed, 16 May 2007 15:34  |
ryanselk
Messages: 16 Registered: May 2007
|
Junior Member |
|
|
Im running IDL on XP.
I have this basic C code:
#include <stdlib.h>
int main()
{
int n=5;
n=n*2;
return n;
}
//This file is basic.c
> From IDL, I just want to call this program and return n.
In IDL, I can write:
SPAWN, 'basic' ; this of course runs the
basic.c program.
But this doesnt return anythingof course.. ive tried to add another
variable after this line such as:
SPAWN, 'basic', variable
But windows doesnt like any of this...
Can anyone help me with this basic application? With spawn in the past
ive gotten it to do calculations on a variable and return them, but
with no input, im unsure how to get the output.
Thanks for any help! Ive also boughten the 'from c->dlm->idl' book but
it wont be in for a few days.
|
|
|
Re: Need help with basic spawn command [message #54100 is a reply to message #54079] |
Tue, 22 May 2007 08:06  |
ryanselk
Messages: 16 Registered: May 2007
|
Junior Member |
|
|
On May 22, 6:55 am, Trae <traewin...@gmail.com> wrote:
> Sorry for jumpiing on this thread late.
>
> Why don't you use a combination of make_dll and call_external to have
> IDL call your C code? I do a lot of number crunching in IDL and write
> C codes to do much of the tedious but large jobs. These are the
> procedures I use to get C an IDL to talk to each other.
>
> The learning curve on these procedures is not bad and I've had great
> success with them. It also sounds easier than what you are trying to
> do with printf and if you are worried about time, nothing takes longer
> than reading files. Call_external allows you to pass variables.
>
> Cheers,
> -Trae
>
> Cheers,
>
> On May 17, 9:32 am, ryans...@gmail.com wrote:
>
>> On May 17, 2:45 am, Yi <yi.se...@gmail.com> wrote:
>
>>> IDL'sspawnprocedure can't get the return value from C program.
>>> Of course, you can get the result using second argument like this :
>
>>> IDL>spawn, 'basic', result
>
>>> In this case, the result variable is not the return value of main
>>> function(C Program)
>>> but the output text result of the 'basic' command in Shell(Unix) or
>>> Command Prompt(MS Windows)
>
>>> The 'result' variable is string array, so it can catch multi lines
>>> text output.
>
>>> Anyway, if you want to usespawnprocedure, the C program should be
>>> modified.
>
>>> I expect that you can get result if you insert,
>
>>> printf("%d", n);
>
>>> into your C code.
>
>>> On 5월17일, 오전7시34분, ryans...@gmail.com wrote:
>
>>>> Im running IDL on XP.
>
>>>> I have this basic C code:
>
>>>> #include <stdlib.h>
>
>>>> int main()
>>>> {
>
>>>> int n=5;
>>>> n=n*2;
>>>> return n;}
>
>>>> //This file is basic.c
>
>>>> >From IDL, I just want to call this program and return n.
>
>>>> In IDL, I can write:
>
>>>> SPAWN, 'basic' ; this of course runs the
>>>> basic.c program.
>
>>>> But this doesnt return anythingof course.. ive tried to add another
>>>> variable after this line such as:
>>>> SPAWN, 'basic', variable
>
>>>> But windows doesnt like any of this...
>
>>>> Can anyone help me with this basic application? Withspawnin the past
>>>> ive gotten it to do calculations on a variable and return them, but
>>>> with no input, im unsure how to get the output.
>
>>>> Thanks for any help! Ive also boughten the 'from c->dlm->idl' book but
>>>> it wont be in for a few days.
>
>> Thank you so much, I understand now! Your right that it works when
>> adding a printf to the code with the result on thespawn.
>
>> I was under the impression that this would not work on windows, only
>> unix, not sure why, but it does.
I couldnt get the examples of the call_external working, nor could I
make on that did.
It seems the compiler is not reconized on this system (visual studio
2003) and re-instanlling it isnt really an option.
Soon I hope to get the call external working though! thanks!
|
|
|