license for private toolbox

I am a software developer who has developed a private toolbox. Is there anyway I can have some kind of license control on the toolbox to prevent a customer from unrestricted distributing the toolbox.
Possible approaches: Piggy-back on the matlab license manager? A mxLicense( ) function to let me check the license number from C code?

 Réponse acceptée

Jan
Jan le 15 Août 2013

0 votes

The license number can be check easily by using the license command in mexCallMATLAB. But this can be replaced easily by a user-defined function, such that this does not have a severe security level.
You find many discussions here and some contributions in the FileExchange for creating a unique machine ID. And internet search engine might be more efficient than the forum search.

4 commentaires

John
John le 16 Août 2013
Thanks for the reference to mexCallMATLAB, which should work for me. However, I can't quite get it to work. Here is what I tried:
mxArray *plhs[1], *prhs[1]; int nlhs, nrhs;
nlhs = 1; nrhs = 0; mexCallMATLAB( nlhs, plhs, nrhs, prhs, "license");
mexPrintf("License number: %6s \n",plhs[0]);
I am guessing this is an issue with the type of the returned value. In the matlab GUI, license returns a char of length 6 (at least on my Win 32 system.)
Kaustubha Govind
Kaustubha Govind le 16 Août 2013
John: As the documentation says, mexPrint is an ANSI C PRINTF-style function, so you are using the formatting string %6s (which I believe is meant for character arrays) for an mxArray-pointer. If you want the equivalent of the DISP command in MATLAB, you can again call mexCallMATLAB with the "disp" command and pass in the mxArray-pointer.
Jan
Jan le 17 Août 2013
As far as I remember license replies a double. Then:
mexPrintf("License number: %g\n", mxGetScalar(plhs[0]));
John
John le 19 Août 2013
The result is not a double, but a string. The following code gets the matlab license number as a string:
mxArray *plhs[1]; char str2[16];
mexCallMATLAB( 1, plhs, 0, NULL, "license");
mxGetString( plhs[0], str2, 16 );
mexPrintf( " \n str2=%s \n", str2 );

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by