comp.lang.idl-pvwave archive
Messages from Usenet group comp.lang.idl-pvwave, compiled by Paulo Penteado

Home » Public Forums » archive » make_dll and call_external....
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Return to the default flat view Create a new topic Submit Reply
make_dll and call_external.... [message #42786] Thu, 24 February 2005 04:49 Go to previous message
fabrice.monti is currently offline  fabrice.monti
Messages: 4
Registered: February 2005
Junior Member
in a recent post, i tried to remote a CCD by "mil.h" library and a
call_external procedure.... Rick and Mark tried to help me, but i
haven't a good background to do this... Today I read "the external
development guide" and a tutorial about this subject... and i always
have a probleme....
step by step, i wrote a C code. and i would like to call with IDL.
this code is binarize a image... it very simple for the moment, i will
see the next later...

my C code is : (name is binarize_call.c)

# include <stdio.h>
# include "export.h"

uchar binarize (int argc, char *argv)
{
UCHAR *data,*data_tmp,t,new_t;
IDL_LONG64 s0,s1;
IDL_LONG n,i,n0,n1;

data=(uchar *) argv[0];
n=*(IDL_long *) argv[1];

s0=0;data_tmp=data;
for (i=n;i--;) s0+=(*data_tmp++);
new_t=s0/n;
do {
t=new_t;
n0=n1=0;s0=s1=0;
for(i=n,data_tmp=data;i--;data_tmp++)
if ((*data_tmp) < t) {n0++;s0+=(*data_tmp);}
else {n1++;s1+=(*data_tmp);}
new_t=(n1*s0+n0*s1)/(2*n0*n1);
} while (t != new_t);

for(data_tmp=data,i=n;i--;data_tmp++)
*data_tmp = *data_tmp > t;
return t;
}

my IDL code is:

pro test_call
make_dll, "binarize_call", "binarize", compile_directory= ".",
dll_path=dll
image= read_image(filepath("mr_abdomen.dcm",
subdirectory=["examples","data"]))
window, 0, xs=512, ys=256
tv, image,0
res= call_external (dll, "binarize", image, n_elements(image),
/b_value,/unload, /cdecl)
help, result
tvscl, image,1
end

and the output is:

'cl' n'est pas reconnu en tant que commande interne
ou externe, un programme ex&#8218;cutable ou un fichier de commandes.
cl -D_DLL -DWIN32 -D_MT /nologo /I"C:\Program
Files\RSI\IDL60\external\include" /c "C:\Program
Files\RSI\IDL60\binarize_call.c"
/Fo"binarize_call_1260_ANALIMAGES.obj"
Impossible de trouver C:\Program
Files\RSI\IDL60\binarize_call_1260_ANALIMAGES.exp
Impossible de trouver C:\Program
Files\RSI\IDL60\binarize_call_1260_ANALIMAGES.lib
Impossible de trouver C:\Program
Files\RSI\IDL60\binarize_call_1260_ANALIMAGES.obj
% CALL_EXTERNAL: Error loading sharable executable.
Symbol: binarize, File = .\binarize_call.dll
ERROR_MOD_NOT_FOUND
% Execution halted at: $MAIN$ 12 C:\Program
Files\RSI\fabrice\test_call.pro

My complier is a freeware "microsoft visual C++ toolkit".(MVC++)

in the output, IDL search the 'CL'. This file is include in the MVC++
folder, but i don't where is the setting path to permit IDL to found
this file. I tried to save the path in a general setting but it
doesn't work....

the !Make_dll setting is:
compile_directory : C:\Documents and
Settings\montif\.idl\idl_6_0_Win32_x86_m32_f64\compile_dir
complie_name : Microsoft Visual C++ 7.0
CC : cl %X -D_DLL -DWIN32 -D_MT /nologo /I"C:\Program
Files\RSI\IDL60\external\include" /c %C /Fo%O
LD :link /out:%L /nologo /nodefaultlib /dll %O /def:%E "C:\Program
Files\RSI\IDL60\bin\bin.x86\idl32.lib" msvcrt.lib kernel32.lib %X

I hope that somebody will be able to help me..
thanks
[Message index]
 
Read Message
Read Message
Previous Topic: Speed problem
Next Topic: Re: Slow Around Here

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ] [ PDF ]

Current Time: Wed Oct 08 19:56:11 PDT 2025

Total time taken to generate the page: 0.00188 seconds