calling 2 custom function of the same name

I'd like to know if there is simple way to calling 2 custom functions of the same name. I have one MEX function, and now I need add the new functionality to it, but I do not want to touch any of the existing MEX function, and the interface to all the other users. I just want to write the same name function, add the new functionality, and than call the existing function. I'd like to know if there is any simple way to do it? Thanks.
Julia

 Réponse acceptée

Walter Roberson
Walter Roberson le 17 Mar 2011

0 votes

Put the new interface in to directory that appears first on the path. Have the new interface loadlib() the previous instance and call it.

6 commentaires

julia
julia le 17 Mar 2011
my mex-file is not in the lib, may I still use loadlibary()?
Walter Roberson
Walter Roberson le 17 Mar 2011
I am not completely sure. If you were using one of the Unix-like systems (Linux, OS-X) then Yes: on those systems there is no real distinction between libraries and executables. I am, though, not familiar with how Windows handles this kind of thing.
julia
julia le 17 Mar 2011
I am using Linux. I only have .mexglx
How can I loadlibary for it?
Walter Roberson
Walter Roberson le 17 Mar 2011
It appears that you would use loadlibrary() and then calllib() if you were working from the Matlab level.
At the Linux level, use the system call dlopen() to open the .mexglx file, then use dlsym() to get a pointer to the mex routine entry point, typecast it to the appropriate function type, and call through the pointer. The Linux man page for dlopen gives an example.
julia
julia le 18 Mar 2011
I am working from the Matlab level. Using loadliary(myFunc) in myFunc.m, I got: can not find the head file. I do not have the head file for it. I only have the .mexglx file. How can I load it dynamically? Thanks.
Walter Roberson
Walter Roberson le 18 Mar 2011
You have to create an appropriate .h file to match it, if you want to use loadlib() . You must already know the calling sequence in order to be able to call it without your addition -- or you must at least be able to reverse-engineer the calling sequence by knowing the standard mechanisms that Matlab uses when calling a mex routine.
You indicate that you do not want to touch the existing mex file, but do you have the source for it? If you do, then you can easily extract the calling sequence from there, and fairly readily build a .h file if you need it.

Connectez-vous pour commenter.

Plus de réponses (1)

julia
julia le 22 Mar 2011

0 votes

I soved the problem by using soft link and rename the linked file name that is pointing to the orginal function, and put the linked file in the src/ dir.

Catégories

En savoir plus sur Write C Functions Callable from MATLAB (MEX Files) dans Centre d'aide et File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by