I can't run VLFeat on matlab [duplicate] - matlab

I downloaded the VLFeat lib from its git repository! I followed the instruction in the installation page. But when I ran the vl_setup command I got this warning:
Warning: Name is nonexistent or not a directory: ..\Adv. 3D
Computer Vision\vlfeat\toolbox\mex\mexw32
So follow some steps mentioned in MathWorks website, like 1,2,3 but the problem didn't solve. I trace the vl_setup.m file and according to the error statement it can not find the mexw32 folder. but there wasn't any folder like that when I downloaded that lib.
I'm using Windows 7, Matlab 2013a

Did you compile the mex files first through vl_compile.m? Once you compile the code, the mex directory should appear with the MEX files associated with your OS. Those setup instructions assume you have the binary distribution but you downloaded the source from github.
Consult VLFeat's compilation instructions for Windows here: http://www.vlfeat.org/compiling-windows.html

Related

MATLAB R2020b: libmwlaunchermain.so: cannot open shared object file: No such file or directory when running compiled binary

I compiled my MATLAB script using mcc and I'm trying to run the binary in a Debian GNU/Linux 9 (stretch) environment.
I only have the full MATLAB installation available and don't have (and don't want) the MATLAB Runtime, as I believe the full MATLAB installation comes with the Matlab runtime already.
I get the following error when I try running the binary.
root#me:/home/matlab/my-project/build-binary# bash run_my_project.sh /usr/local/matlab/R2020b/bin/glnxa64
------------------------------------------
Setting up environment variables
---
LD_LIBRARY_PATH is .:/usr/local/matlab/R2020b/bin/glnxa64/runtime/glnxa64:/usr/local/matlab/R2020b/bin/glnxa64/bin/glnxa64:/usr/local/matlab/R2020b/bin/glnxa64/sys/os/glnxa64:/usr/local/matlab/R2020b/bin/glnxa64/sys/opengl/lib/glnxa64
./tfda_cli: error while loading shared libraries: libmwlaunchermain.so: cannot open shared object file: No such file or directory
I can confirm that the file it's not able to find is indeed in the directory I pointed it to.
root#me:/home/matlab/my-project/build-binary# ls /usr/local/matlab/R2020b/bin/glnxa64 | grep libmwlaunchermain.so
libmwlaunchermain.so
Other questions about this topic assume that the MATLAB Runtime is installed, which isn't the case for me since I only have the full MATLAB installation.
Thanks for any suggestions!

Mex cannot find a file, but "which" can

I am trying to compile a C++ function (found here). I downloaded the requisite packages, installed Microsoft Windows SDK 7.1, linked it to MATLAB using mex -setup, and then unzipped the function packages into my MATLAB path.
When I run the command:
mex -output Faddeeva_w -O Faddeeva_w_mex.cc Faddeeva.cc
I get the error message:
C:\PROGRA~1\MATLAB\R2013A\BIN\MEX.PL: Error: 'Faddeeva_w_mex.cc' not found.
But if I type which Faddeeva_w_mex.cc I get:
C:\Users\craigim\Documents\Code\Matlab\Faddeeva-MATLAB\Faddeeva_w_mex.cc
So MATLAB and the which command have no problems finding the file, but mex is lost. This is my very first attempt at compiling something with mex, so I'm really not sure where to start here. Does mex have a different path variable that I have to set?
I'm using MATLAB 2013a on a Windows 7 64bit machine with the version of SDK 7.1 that was linked from the MATLAB List of supported compilers.
Either cd into the directory containing the files (assuming they both in the same place), or specify full/relative path to the C++ files when invoking mex function
Try putting addpath('C:\Users\craigim\Documents\Code\Matlab\Faddeeva-MATLAB\'); in your m-file. The path that MATLAB uses seems to be internal and independent of whatever your OS is using.
Documentation on addpath here.
And a similar discussion here.
You may also have to set your PATH environment variable to the string returned by the command fullfile(matlabroot,'bin',computer('arch')) in MATLAB. Here are some instructions on setting environment variables for Windows and Mac or Linux
There is also a pretty good overview of building mex-files here although I get the impression that the basics are not going to answer your question.

Error: Invalid MEX file, the specified module could not be found

I have compiled Mex file successfully on my laptop. But when I am running it, it says Invalid mex file 'c:\newfolder\filename.mexw32' The specified module could not be found.
System specification:
OS: windows 7
MATLAB 2010a
Microsoft Visual Studio 2008.
The same mex file is compiled and run successfully on my PC under XP SP3.
This MathWorks support link suggests two possible reasons to your problem:
You do not have all of the necessary libraries that the MEX-function is dependent upon.
You are running a MEX-file on a different version of MATLAB than it was compiled on.
Either way, to locate the source of this error it says that you need to list all dependent library files and verify their existence in the system you're trying to run the MEX file on, and also recommends the Dependecy Walker as the tool to to do that.
Do you you the mex file on another system than the one it is created on?
If so, then you need to install the Microsoft Visual C++ Redistributable on that machine.
I had this problem also when upgrading from Matlab2010a/VS2008 to Matlab2013a/VS2010.
All my environment variables were sent correctly.
A reboot fixed problems with OpenCV dlls not being found, I assume that it was still trying to link to the OpenCV dlls for VS2008 (even though I had changed the path). However still my mex file could not find libmex.dll.
When I installed Matlab2013a, I did not uninstall the old version (in case I wanted to go back).
However that was the cause of my problem.
Once I uninstalled the old version of Matlab and rebooted again, the problem was gone.
I had a similar problem. I was only linking against 1 'lib' so I simply copied that lib into the same folder as the mexw64 and it worked.
I have not poked around for the correct place to tell MATLAB to add the lib's real location to whatever path it's looking at.

building MATLAB jpeg toolbox with libjpeg8d

This question is related to another question I asked here:
Error reading image using jpeg_read from Matlab's jpeg toolbox
I've been trying to compile the jpeg toolbox under Windows 7 (using the commands Shai provided in the answer to the question I posted), but I get the following error:
jpeg_read.c(52) : fatal error C1083: Cannot open include file: 'jerror.h': No such file or directory
which I believe happened because I haven't built libjpeg. I tried to build libjpeg6b like jpegtoolbox's README says, but I couldn't find a clear guide on how to do it on Windows with visual studio 2010 (and libjpeg's install document doesn't help much), so I ended building libjpeg8d.
My question is if there's any way to use libjpeg8d to compile the jpeg toolbox. I've tried running the command:
mex -I<IJGPATH> jpeg_read.c <LIBJPEG>
with IJGPATH being my libjpeg8d installation folder and LIBJPEG being the path to the jpeg.lib file, inside IJGPATH/Release, but I still get the same missing jerror.h error as before.
Thanks in advance.
Jpeg toolbox contains Matlab routines for manipulating JPEG files. While Matlab's built-in IMREAD and IMWRITE functions provide basic conversion between JPEG files and image arrays, they do not provide access to the details of the JPEG image, such as the JPEG coefficients or the quantization tables.
The routines in this package provide additional functionality for directly accessing the contents of JPEG files from Matlab, including the Discrete Cosine Transform (DCT) coefficients, quantization tables, Huffman coding tables, color space information, and comment markers. The toolbox can be added to Matlab to use the functions.
First check whether the following are installed in your system.
1.Microsoft windows sdk7
2.Microsoft visual c++ 2010 express
if they are not installed, Download and install them in the order specified.
Note: Before installing windows sdk, uninstall any redistributalbe packages of visual c++ 2010. Else windows sdk produces problem during installation and the install fails. During installation dont forget to check the 'x64 Libraries' for 64bit OS and 'x86 Libraries' for 32bit OS, under Windows Headers and Libraries. This allows to use compiler tools for 64 bit operating systems. Once it overs, install visual c++. These tools are free and available at microsoft website. Both online and offline installers are available.
Now comes the real integration process
Step 1: Download the jpeg toolbox and extract it to a separate folder (eg. jpeg)
Download jpeg toolbox
Step 2: Download jpeg source files and extract it to a separate folder (eg.jpegsrc). In the folder jpeg-6b which is in jpegsrc, rename jconfig.vc to jconfig.h and makefile.vc to makefile
Download jpegsrc file
Step 3: From start->All programs-> Microsoft windows sdk , open the command prompt. This opens the 'windows x64 debug environment'. Navigate to the jpeg-6b folder which is inside the jpegsrc folder which is extracted at step 2. Run the command 'nmake clean all' without quotes. This creates the libjpeg.lib file in the same folder.
Step 4: Now open the matlab and choose the workfolder as jpeg, created in step 1.
Now in the command windows run the following commands,
mex -I jpeg_read.c
mex -I jpeg_write.c
Replace with the path to the IJG jpeg-6b directory created in step 2, and
with the full path to the IJG code library file (libjpeg.lib).
To use the jpeg_read and jpeg_write functions copy jpeg_read.mexw64 and jpeg_write.mexw64 files created above to your work directory. Dont uninstall visual c++ compiler or it wont work.
If you are trying to work in Windows, you need to rename jerror.vc to jerror.h
Also, when you mex the files, you need to edit the jpeg_read.c and jpeg_write.c from include to include "jerror.h"

How to create mex files for libsvm C files

I have dowloaded libsvm from http://www.csie.ntu.edu.tw/~cjlin/libsvm/
I unziped and copied the libsvm folder to c:..../documents/MATLAB folder. includedmex.h to all C files. Inside libsvm-> I have different folders. also in that Matlab folder I have files like libsvmread.c , libsvmwrite.c , makefile, make.m, svmtrain ,svmpredict etc...
how I can use these files in matlab? Can any one help me to create .mex files for these files.
I read and tried many times ..it is not working correctly for me. I need to do svmensemble creation in matlab.can anyone help me ASAP.
Have a look at the README file:
Installation and Data Format
On Unix systems, type make' to build thesvm-train' and
`svm-predict' programs. Run them without arguments to show the usages
of them.
On other systems, consult Makefile' to build them (e.g., see
'Building Windows binaries' in this file) or use the pre-built
binaries (Windows binaries are in the directorywindows').
For more information, tell us which operating system you are using.
you need to do mex -setup to configure the compiler.After which, you run the make.m file in the matlab folder.. Please read the README file.. the details are there...