![]() |
![]() ![]()
Experimental Physics and
| ||||||||||||||
|
Hi all,
I decided to recompile EPICS by using Strawberry Perl and Visual Studio. MATLAB CA works beautifully now.
Get Outlook for iOS
From: Freddie Akeroyd - STFC UKRI <freddie.akeroyd at stfc.ac.uk>
Sent: Tuesday, April 29, 2025 4:04:40 AM To: Wang, Andrew <wang126 at llnl.gov>; Mark Rivers <rivers at cars.uchicago.edu>; EPICS tech-talk <tech-talk at aps.anl.gov> Subject: RE: Unable to mind .lib files after successfully compiling EPICS using mingw64 Hi,
The default DLL search order includes the directory of the main executable and PATH, so ca.dll / com.dll in the same directory as mca.mexw64 may not be enough unless that directory also gets added by matlab automatically. Try moving Com.dll and ca.dll to either a directory in your PATH or the same directory as matlab.exe
Regards,
Freddie
From: Tech-talk <tech-talk-bounces at aps.anl.gov>
On Behalf Of Wang, Andrew via Tech-talk
Hi Mark,
Thanks for the clarification. Not sure if you can help me with this, but I was able to get mca compiled using mex on MATLAB with this command (I removed parts of the path for just this email for reasons):
mex -R2017b mca.cpp MCAError.cpp Channel.cpp ... <TOP>\epics-base\lib\windows-x64-mingw\libCom.dll.a ... <TOP>\epics-base\lib\windows-x64-mingw\libca.dll.a ... -D_MINGW ... -IC:\Users\wang126\epics-base\include ... -IC:\Users\wang126\epics-base\include\os\WIN32 ... -IC:\Users\wang126\epics-base\include\compiler\gcc ... -v
On MATLAB 2024b, mex completed successfully. However when I went to run mca.mexw64, it states that:
Invalid MEX-file <TOP>\matlab_ca\mca.mexw64': The specified module could not be found.
Reading through the MATLAB forums, I used the dependency tool that came with MSVC to find what its dependencies are. They are listed below.
Dump of file mca.mexw64
File Type: DLL
Image has the following dependencies:
libmex.dll libmx.dll KERNEL32.dll msvcrt.dll ca.dll Com.dll
I have ca.dll and Com.dll in the same directory as mca.mexw64. The others are found in PATH. I feel like I am missing something important, but not sure what it is. From: Mark Rivers <rivers at cars.uchicago.edu>
When you build dynamically on Windows with VS there are 2 files:
When you link, as in the Matlab Makefile, you only link with the .lib files. It finds the .dll files at run-time.
When you build statically on Windows with VS there is only a .lib file, which contains both the symbols and the code. It does not need to find .dll files at run-time.
I am sure pretty sure that Matlab is linking to the dynamic DLLs for ca and Com.
Mark
From: Tech-talk <tech-talk-bounces at aps.anl.gov>
on behalf of Wang, Andrew via Tech-talk <tech-talk at aps.anl.gov>
Hi all,
I have been tasked with building EPICS on Windows. I was able to get it compiling using mingw64. I basically followed the instructions here (https://docs.epics-controls.org/en/latest/getting-started/installation-windows-msys2.html), albeit I did not use the tar.gz file. I instead cloned the epics-base repository.
I have been able to run an IOC and all of that. However, now I am trying to get mca to work, which requires com.lib and ca.lib. However, I do not see these in my lib directory. I only find com.dll.a and ca.dll.a, which to my understanding is not a static library.
The examples compilations in mca all use .lib. (https://github.com/epics-extensions/matlab_ca/blob/master/alt_compile/mcacompile_win64_mscc.m)
Please advise?
| ||||||||||||||
ANJ, 29 Apr 2025 |
![]() · Download · Search · IRMIS · Talk · Documents · Links · Licensing · |