From: Tech-talk <tech-talk-bounces at aps.anl.gov>
On Behalf Of Wang, Andrew via Tech-talk
Sent: 29 April 2025 03:08
To: 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 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.
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