MATLAB how to set the path before running an executable - matlab

When the executable runs I'm trying to make it access another folder saved on my flash drive. I have tried adding addpath() before the script but that doesn't work. I am trying to make the executable search for the mcr folder I have installed on my flash drive before running the main project. So far it keeps crashing trying to search for the runtime folder.
Error
Could not find version 9.0.1 of MATLAB Runtime.
Attempting to load mclmcrrt9_0_1.dll.
Please install the correct version of the MATLAB Runtime. Contact your vendor if you do not have an installer for the MATLAB Runtime.
I understand that when you install the MATLAB Runtime it installs in the C Drive. But I installed it on my flash drive. So that when I used different PC's I didn't have to install the runtime every time. But every time I use a different PC that error always shows. So I'm trying to set the PATH in my executable so that it will always know to find the Runtime folder on my flash drive.

You have to set the path before you launch the (matlab created) exe - you cant set it from within Matlab. You can do this by creating a script, e.g. on windows create run.bat (drive and path to your exe assumed)
path = E:\MCR\v90\runtime\win64
yourMatlab.exe

Related

PostgreSQL driver does not load with PyQt5 [duplicate]

I have some trouble when I want to add a database.
_dataBase = QSqlDatabase::addDatabase("QPSQL");
After calling this method I have an error:
QSqlDatabase: QPSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7
I include to PATH variable paths to:
PostgreSQL\9.3\bin
PostgreSQL\9.3\lib
PostgreSQL\9.3\include
Also I copy folder sqldrivers to Debug folder. Also tried to copy dlls drom this folder to Debug. Doesn't work either.
I came here googling because I had the same problem in Windows.
In my case to solve the issue I had to install PostgreSQL for Windows 32 bits since my Qt target was MinGW 32 bits.
Additionally, I had to add the PATH to the PostgreSQL bin and lib directories so Qt could find the right .dlls.
#SET PATH=C:\Program Files (x86)\PostgreSQL\9.6\bin\;C:\Program Files (x86)\PostgreSQL\9.6\lib\;%PATH%
The PATH can be set before launching Qt Creator or using the Qt Creator itself via the Build Environment in the Projects pane.
Add the system variable QT_DEBUG_PLUGINS=1 if you want to get full information of why the QPSQL driver has not been loaded.
Probably you will discover that Qt is not able to find it. Copy and paste the output here to know what exactly happens.
Use depends.exe on qsqlpsql.dll and found that this dll need libpq.dll from PostgreSQL\9.3\libfolder. Add libpq.dll to Debug folder and it works:)
Try pip install PyQt5 event if you already installed it using conda or installer. It helped me.
I got same problem with deploying Qt application (windeployqt didn't help). I had to copy more .dlls (libcrypto-1_1-x64.dll, libiconv-2.dll, libintl-8.dll, libpq.dll, libssl-1_1-x64.dll, libwinpthread-1.dll) from postgreSQL bin path (c:\Program Files\PostgreSQL\12\bin) next to .exe file (according to dependency walker).

How to run a MATLAB executable application without having to install MATLAB Runtime on every PC

I understand that in order for a MATLAB executable to run on Windows, it needs to have MATLAB Runtime installed. But is there a way to copy the MATLAB Runtime folder and files on a disk or DVD with the executable file and run the application without having to install MATLAB Runtime.
I have tried using MATLAB Coder but it doesn't support most of the functions that I am using so it crashes.
I previously tried this on a flash drive. I installed MATLAB Runtime on one PC copied the whole folder to my flash which had the executable, tried to run it, but the executable came up with an error saying that it could not find the MATLAB Runtime files.
Is there any way for me to have MATLAB Runtime on a disk (or on a flash drive) without having to install it on every PC I use.

Netgen with EIDORS

i want to run netgen in a command line in EIDORS Matlab but every time i come across this problem that matlab ask me for the path of the netgen. i receive this message every time.
'ng' is not recognized as an internal or external command,
operable program or batch file.
Netgen call failed. Is netgen installed and on the search path?
If you are running under windows, I can attempt to create
a batch file to access netgen.
Please enter the directory in which to find netgen.
If you don't have a copy, download it fromhttp://www.hpfem.jku.at/netgen/
Note that you MUST use names without spaces. Thus
instead of C:/Program Files/ write C:/Progra~1/
netgen_path?
yet i define new system variable in windows advanced system configuration and over there i gave the path of the tcl library but it didn't work.
May any body help me ?
Install netgen first. Go here to download:
http://sourceforge.net/projects/netgen-mesher/
Go "Files" entry to download more variant version of netgen. Take note that EIDORS 3.6 is only compatible up to the latest version of netgen-5.0.
I am using Windows 7, 64-bit Operating System. Installation of netgen with x64 and Win32 are worked fine for me. But because as you said, EIDORS requires netgen path to be no space, so when installation, I choose a path other than default "Program Files" (or similar), which has no space.
When EIDORS asks for the netgen path, give the path name until "\bin". These procedures are worked in my computer.
You can place the netgen.exe path " ...\bin " within the matlab toolbox:
How to Set Path in Matlab
thereby not needing to paste the path into EIDORS each time you run it in MATLAB.
Also downloading EIDORS 3.8 with Netgen 5.3 as a zip file avoids having to install netgen separately.

Running Matlab MCR and MATLAB on the Same Machine

I'm having trouble getting a compiled .exe file to run with MCR instead of Matlab (I can tell because the program is using multiple threads, which it would not do if it were running with MCR). The MATLAB documentation (http://www.mathworks.com/help/toolbox/compiler/f12-999353.html) says:
"To run deployed components against the MCR install, mcr_root\ver\runtime\win32|win64 must appear on your system path before matlabroot\runtime\win32|win64.
If mcr_root\ver\runtime\arch appears first on the compiled application path, the application uses the files in the MCR install area.
If matlabroot\runtime\arch appears first on the compiled application path, the application uses the files in the MATLAB Compiler installation area."
Can anyone connect the dots a bit more for me? I don't know what this means. Thanks!
I had the same problem: my compiled code was multithreaded, which I did not want.
The problem got solved by compiling with the option:
-R -singleCompThread
You need to set properly the PATH global environment variable in Windows. How you do it exactly depends on Windows version.
Here is the first link from Google by query "set path on Windows": http://www.computerhope.com/issues/ch000549.htm
This variable is a list of directories. Make sure you have a directory with MCR executable earlier in this list than a directory with MATLAB executable.

Runtime error for MCC compiled program using parfor

I have problems running a program compiled with MCC that uses parfor. The non-compiled .m version works (no bug). When I run the compiled version, I get
"distcomp.remoteparfor" is undefined. I believe I exactly have the error described in
the following link.
http://www.mathworks.com/support/solutions/en/data/1-PAHWE/index.html?product=CO&solution=1-PAHWE
However, since MCR is not installed on my machine (got Matlab and MCC),
I am wondering what the pathes $APPNAME_mcr/java/jar/toolbox and
$MCR/MATLAB Component Runtime/v70/java/jar/toolbox correspond to. I found
the distcomp.jar file in C:\Program Files\MATLAB\R2011b\java\jar\toolbox, but I don't know where to put it since see any path corresponding to $MCR/MATLAB Component Runtime/v70/java/jar/toolbox since MCR is not installed.
Thanks a lot!
Fred
No need to install the MCR if you are simply trying to run the application on the same machine that has MATLAB. The question to ask is, HOW are you launching the compiled application? From a DOS command window? From within MATLAB using the SYSTEM command?
If you are launching the application from a DOS / UNIX command line, then the important thing to keep in mind is that the MATLAB binaries need to be on your system path i.e. just make sure:
$MATLABROOT\bin\$ARCH
is on your system path. Where $MATLABROOT is the matlab installation folder, and $ARCH is your system architecture. For example:
c:\work\matlab\bin\win64
on my machine since my installation folder which contains MATLAB is:
c:\work
and i am on a win64 machine.
The problem is solved. The solution is to make the program
a function instead of a script :
http://www.mathworks.com/matlabcentral/answers/22825-parfor-errors-when-file-is-compiled