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>
Sent: Monday, April 28, 2025 6:18 PM
To: EPICS tech-talk <tech-talk at aps.anl.gov>; Wang, Andrew <wang126 at llnl.gov>
Subject: Re: Unable to mind .lib files after successfully compiling EPICS using mingw64
When you build dynamically on Windows with VS there are 2 files:
-
.lib contains the symbols
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.
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?
Purple
ribbon awareness