Unable to run the .exe file (erro: 0xc0000279) - fortran

I try to use oneAPI command line to compile the FORTRAN.f90 file. The Fortran code can be compiled successfully. However, I cannot run the .exe file. Every time I run the .exe file, the error shows up and it says: The application was unable to start correctly (0xc0000279). I attached the snapshot here.
The Fortran code comes from the IMSL package example code. I can compile it and run it smoothly on my old computer. However, I cannot run it on my new computer. I got the license from the IMSL team and it should work. I also contact the imsl team for help and they told me to run the .exe file on "dependency walker" program to point out the error. The snapshot is the output of the "dependency walker".
The IMSL team says 'based on the output of the 'dependency walker', the error comes from LIBIFPORTMD.DLL which is an Intel library.' I'm not sure what this means and how to solve it.
I tried many ways and still cannot get rid of this error.
Can someone please tell me some clues on how to solve this problem? Appreciate it very much.

According to your Dependency Walker output, the Intel Math Kernel Library (MKL) DLLs are not installed. This is expected if you installed only the Intel oneAPI HPC Toolkit, or just the Intel Fortran Compiler, as MKL is in the oneAPI Base Toolkit.
Go to https://www.intel.com/content/www/us/en/developer/articles/tool/oneapi-standalone-components.html In the left column, select "Intel oneAPI Math Kernel Library (oneMKL)". Then select either the online or offline installer for Intel oneAPI Math Kernel Library for Windows.

Related

Integration of Armadillo in x86 C++ Application in Microsoft Visual Studio

since last week I'm working with the "Armadillo" C++-library.
I started with a default 64-bit C++ application in Microsoft Visual Studio. For the installation I followed the steps in the post below:
How can I install Armadillo on Windows?
Following these steps, everything worked fine for me.
But now I have to expand my C++-application and have to include/integrate another .dll. The problem for me is, that this .dll is a 32 bit .dll. So when I try to call it in my 64-bit application, which uses the Armadillo library, I always get the "class not registered"-error. This is why I want to migrate my whole project into a x86-application. But for some reason I'm not able to migrate the Armadillo-library into this x86-application (Following the instructions in the link above doesnt works anymore). While building the programm I always get more than 50 "LNK2019" errors.
Does anyone know how to fix the problem and know who to integrate Armadillo into a 32-bit application?
Thanks for your help!!
Solved it.
For me it works with replacing the x64-bit "libopenblas.lib" and "libopenblas.dll", which are installed from Armadillo by default, with the x86 "libopenblas.lib" and "libopenblas.dll", which are included in the "OpenBLAS-0.3.15-x86.zip" download file from the OpenBlas release page on GitHub:
https://github.com/xianyi/OpenBLAS/releases
Probably it is enough to only replace the "libopenblas.lib" file.

Eigen library problem: split_test_helper.h not found

I am trying to compile my code that uses the Eigen library but I am having some difficulties. I have compiled and run my program in Visual Studio 2017 with no problems, but since I have to implement this code on some piece of hardware (namely Xilinx ZedBoard that runs Linux OS) I am trying to compile the same code in Xilinx SDK.
When trying to do that I get this error: fatal error:
split_test_helper.h: No such file or directory
I also get this error when building the project with Xilinx SDK -
make: ***[eigen-eigen-323c052e1731/unsupported/test/subdir.mk:275:eigen-
eigen-323c052e1731/unsupported/test/BVH.o] Error 1
I am aware that split_test_helper.h file should be generated as it says in CMakeLists.txt but I guess it does not in the case of Xilinx SDK, but does in the case of compiling with Visual Studio.
Any help is appreciated, thank you.
Also I should maybe mention that I managed to compile and run the code from Linux terminal on a virtual box Linux OS from my computer using g++.

How to install SPAMS toolbox in Matlab 2014b under windows 8.1

I am trying to learn how to successfully compile "Sparse Modeling Software" (SPAMS) in my machine which uses a Windows 8.1 OS and MATLAB R2014b.
The steps I have taken are as followed (some parts might have been unnecessary or missing)
Step 1. Installed "Microsoft Visual C++ 2013 Professional".
Step 2. Installed "Microsoft Windows Software Development Kit (SDK)".
Step 3. Download "spams-matlab-v2.4-svn2014-02-18.tar" from http://spams-devel.gforge.inria.fr/
Step 4. Unzip it in Windows using 7-zip. Only 1 error I received but all he other data were uncompressed. The error is this :
ERROR: Can not set reparse data: C:\Users\Yashar\Desktop\spams-matlab\cpp_library\spams.h
Step5: In MATLAB, I set the compiler:
>> mex -setup C++
message I recieve:
MEX configured to use 'Microsoft Visual C++ 2013 Professional' for C++ language compilation.
Warning: The MATLAB C and Fortran API has changed to support MATLAB
variables with more than 2^32-1 elements. In the near future
you will be required to update your code to utilize the
new API. You can find more information about this at:
http://www.mathworks.com/help/matlab/matlab_external/upgrading- mex-files-to-use-64-bit-api.html.
Step 6. Open compile.m in SPAMS (as recommended) and run it. The error I get looks like this:
compilation of: -I./linalg/ -I./decomp/ -I./prox/ -I./dictLearn/ dictLearn/mex/mexTrainDL.cpp
Error using mex
C:\Users\Yashar\Desktop\spams-matlab\Files not found; check that you are in the
correct current folder, and check the spelling of
'C:\Users\Yashar\Desktop\spams-matlab\Files'.
Error in compile (line 391)
mex(args{:});
Question : What I am doing to me looks pretty standard but I know it takes a while learning how to cope with issues with regard to interfacing codes with MATLAB, etc. Can you please help me with getting around the problems I have and managing to compile SPAMS toolbox in my machine? FYI, I am interested in using mexLasso function in this toolbox.
Hmm. Compiling this toolbox is a bit tricky.
Here is how I do it in Windows 7 + MATLAB 2013a.
Hope it works for you.
(I don't have the issue of unzip)
First, you want to make sure that 'mex' works properly, I have compiled some smaller packages and they worked in general.
Second, change the line
compiler='gcc';
to
compiler='mex';
Third, you can find a lot of lines look like
-I./linalg/ -I./decomp/ -I./prox/ -I./spams/dictLearn/ dictLearn/mex/mexArchetypalAnalysis.cpp
Here 'I./lib_name/' is Linux style path, and you need to change it into something that Windows can understand.
Here is an example:
-I./linalg/ ---> -IC:\Users\XXX\Downloads\SPAMS\linalg
There are totally six pieces that you need to change as following,
-I./linalg/
-I./decomp/
-I./prox/
-I./dictLearn/
-I./dags/
-I./image/
After replacing these strings, just run compile.m, then it should work.
Select 2.5 version the SPAMS software you are running for Windows version. Set the compiler to VS in compile.m and execute the code. This generates the required files. Finally run start_spams.m, which in turn creates the source folders. Now you can run the respective code.

c++ program failed to run on another pc with libgcc error

I wrote some simple code in C++, and I built it and ran it on my laptop, and everything as working. When I tried to run the .exe file on my brother's laptop, it gave me this error The program can't start because libgcc_s_sjlj-1.dll is missing from your computer. Try reinstalling the program to fix this problem. Am I missing something that I should have added or something?
Note: I don't know if it matters or not, but I'm using Code::Blocks.
Thanks
It matters because you used Code::Blocks. If you don't know about it, you most probably used Code::Blocks with MinGW. Install it on that machine followed by a reboot may fix it.
C++ programs need to have a runtime library -- you can think of it as needing .NET Framework to run C# or JRE to run Java programs. Visual C++ uses msvcrt (known as Visual C++ Runtime). Many installations of Windows seem to come with msvcrt by default which may explain why people using MSVC is less likely to run into issues like this.
If you statically link the CRT (C Run Time) you can lift the requirements of the clients having to have the DLL files installed, at the expense of having a larger .exe file.
A relevant SO answer: The program can't start because libgcc_s_dw2-1.dll is missing
You can place that DLL in the same folder as the .exe on your release and it should work

SSE2 - "The system cannot execute the specified program"

I recently developed a Visual C++ console application which uses inline SSE2 instructions. It works fine on my computer, but when I tried it on another, it returns the following error:
The system cannot execute the specified program
Note that the program worked on the other computer before introducing the SSE2 code.
Any suggestions?
PS: It works when I compile the code on the other computer and run it. I think it has something to do with the manifest from what I've scrounged off the net.
Most likely the use of the SSE2 instructions is requiring a DLL which isn't present on the second system.
Here's a blog entry on how to figure out exactly which one:
How to Debug 'The System cannot Execute the specified program' message
If you've built a debug version , a Release build might work on the other machine.
If not, you need to figure out which Microsoft Visual C++ Redistributable your program requires and install it on the other machine.