I was looking towards building Rmath
shared libray with MSVC. I googled, but could not find much on it.
However I came across this thread in r-help group for which there was no reply: https://stat.ethz.ch/pipermail/r-help/2006-June/107720.html
So to try myself, I installed MSVC 2022 community edition.
Also made cmake
and ninja
available in PATH.
From Developer Powershell in Rmath
(clone it) folder
├───include
│ └───R_ext
└───src
└───standalone
I executed:
mkdir build
cd build
cmake ..\CMakeLists.txt -GNinja
The build configures fine:
PS C:\Users\suman\rmath\build> cmake ..\CMakeLists.txt -GNinja
-- The C compiler identification is MSVC 19.37.32824.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: D:/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.37.32822/bin/Hostx86/x86/cl.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Configuring done (1.4s)
-- Generating done (0.0s)
-- Build files have been written to: C:/Users/suman/rmath/build
But does not generate shared library, instead throws the error:
PS C:\Users\suman\rmath\build> ninja
[1/123] Building C object CMakeFiles\Rmath.dir\src\bessel_j.c.obj
FAILED: CMakeFiles/Rmath.dir/src/bessel_j.c.obj
"D:\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\bin\Hostx86\x86\cl.exe" /nologo -DRmath_EXPORTS -IC:\Users\suman\rmath\include -IC:\Users\suman\rmath\include\R_ext /DWIN32 /D_WINDOWS /W3 /MD /O2 /Ob2 /DNDEBUG /showIncludes /FoCMakeFiles\Rmath.dir\src\bessel_j.c.obj /FdCMakeFiles\Rmath.dir\ /FS -c C:\Users\suman\rmath\src\bessel_j.c
C:\Users\suman\rmath\src\bessel_j.c(54): error C2124: divide or mod by zero
[2/123] Building C object CMakeFiles\Rmath.dir\src\choose.c.obj
FAILED: CMakeFiles/Rmath.dir/src/choose.c.obj
"D:\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\bin\Hostx86\x86\cl.exe" /nologo -DRmath_EXPORTS -IC:\Users\suman\rmath\include -IC:\Users\suman\rmath\include\R_ext /DWIN32 /D_WINDOWS /W3 /MD /O2 /Ob2 /DNDEBUG /showIncludes /FoCMakeFiles\Rmath.dir\src\choose.c.obj /FdCMakeFiles\Rmath.dir\ /FS -c C:\Users\suman\rmath\src\choose.c
C:\Users\suman\rmath\src\choose.c(81): error C2124: divide or mod by zero
[3/123] Building C object CMakeFiles\Rmath.dir\src\beta.c.obj
FAILED: CMakeFiles/Rmath.dir/src/beta.c.obj
"D:\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\bin\Hostx86\x86\cl.exe" /nologo -DRmath_EXPORTS -IC:\Users\suman\rmath\include -IC:\Users\suman\rmath\include\R_ext /DWIN32 /D_WINDOWS /W3 /MD /O2 /Ob2 /DNDEBUG /showIncludes /FoCMakeFiles\Rmath.dir\src\beta.c.obj /FdCMakeFiles\Rmath.dir\ /FS -c C:\Users\suman\rmath\src\beta.c
C:\Users\suman\rmath\src\beta.c(67): error C2124: divide or mod by zero
[4/123] Building C object CMakeFiles\Rmath.dir\src\bessel_k.c.obj
FAILED: CMakeFiles/Rmath.dir/src/bessel_k.c.obj
"D:\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\bin\Hostx86\x86\cl.exe" /nologo -DRmath_EXPORTS -IC:\Users\suman\rmath\include -IC:\Users\suman\rmath\include\R_ext /DWIN32 /D_WINDOWS /W3 /MD /O2 /Ob2 /DNDEBUG /showIncludes /FoCMakeFiles\Rmath.dir\src\bessel_k.c.obj /FdCMakeFiles\Rmath.dir\ /FS -c C:\Users\suman\rmath\src\bessel_k.c
C:\Users\suman\rmath\src\bessel_k.c(54): error C2124: divide or mod by zero
[5/123] Building C object CMakeFiles\Rmath.dir\src\bd0.c.obj
FAILED: CMakeFiles/Rmath.dir/src/bd0.c.obj
"D:\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\bin\Hostx86\x86\cl.exe" /nologo -DRmath_EXPORTS -IC:\Users\suman\rmath\include -IC:\Users\suman\rmath\include\R_ext /DWIN32 /D_WINDOWS /W3 /MD /O2 /Ob2 /DNDEBUG /showIncludes /FoCMakeFiles\Rmath.dir\src\bd0.c.obj /FdCMakeFiles\Rmath.dir\ /FS -c C:\Users\suman\rmath\src\bd0.c
C:\Users\suman\rmath\src\bd0.c(50): error C2124: divide or mod by zero
[6/123] Building C object CMakeFiles\Rmath.dir\src\cospi.c.obj
FAILED: CMakeFiles/Rmath.dir/src/cospi.c.obj
"D:\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\bin\Hostx86\x86\cl.exe" /nologo -DRmath_EXPORTS -IC:\Users\suman\rmath\include -IC:\Users\suman\rmath\include\R_ext /DWIN32 /D_WINDOWS /W3 /MD /O2 /Ob2 /DNDEBUG /showIncludes /FoCMakeFiles\Rmath.dir\src\cospi.c.obj /FdCMakeFiles\Rmath.dir\ /FS -c C:\Users\suman\rmath\src\cospi.c
C:\Users\suman\rmath\src\cospi.c(36): error C2124: divide or mod by zero
[7/123] Building C object CMakeFiles\Rmath.dir\src\bessel_y.c.obj
FAILED: CMakeFiles/Rmath.dir/src/bessel_y.c.obj
"D:\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\bin\Hostx86\x86\cl.exe" /nologo -DRmath_EXPORTS -IC:\Users\suman\rmath\include -IC:\Users\suman\rmath\include\R_ext /DWIN32 /D_WINDOWS /W3 /MD /O2 /Ob2 /DNDEBUG /showIncludes /FoCMakeFiles\Rmath.dir\src\bessel_y.c.obj /FdCMakeFiles\Rmath.dir\ /FS -c C:\Users\suman\rmath\src\bessel_y.c
C:\Users\suman\rmath\src\bessel_y.c(53): error C2124: divide or mod by zero
[8/123] Building C object CMakeFiles\Rmath.dir\src\chebyshev.c.obj
FAILED: CMakeFiles/Rmath.dir/src/chebyshev.c.obj
"D:\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\bin\Hostx86\x86\cl.exe" /nologo -DRmath_EXPORTS -IC:\Users\suman\rmath\include -IC:\Users\suman\rmath\include\R_ext /DWIN32 /D_WINDOWS /W3 /MD /O2 /Ob2 /DNDEBUG /showIncludes /FoCMakeFiles\Rmath.dir\src\chebyshev.c.obj /FdCMakeFiles\Rmath.dir\ /FS -c C:\Users\suman\rmath\src\chebyshev.c
C:\Users\suman\rmath\src\chebyshev.c(74): error C2124: divide or mod by zero
[9/123] Building C object CMakeFiles\Rmath.dir\src\bessel_i.c.obj
FAILED: CMakeFiles/Rmath.dir/src/bessel_i.c.obj
"D:\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\bin\Hostx86\x86\cl.exe" /nologo -DRmath_EXPORTS -IC:\Users\suman\rmath\include -IC:\Users\suman\rmath\include\R_ext /DWIN32 /D_WINDOWS /W3 /MD /O2 /Ob2 /DNDEBUG /showIncludes /FoCMakeFiles\Rmath.dir\src\bessel_i.c.obj /FdCMakeFiles\Rmath.dir\ /FS -c C:\Users\suman\rmath\src\bessel_i.c
C:\Users\suman\rmath\src\bessel_i.c(53): error C2124: divide or mod by zero
[10/123] Building C object CMakeFiles\Rmath.dir\src\d1mach.c.obj
ninja: build stopped: subcommand failed.
Careful look shows there is error C2124
for which the compiler is failing.
I googled again. Came out with some links:
- Suppress Divide or Mod by zero Compiler Error in C
- http://www.databaseforum.info/2/9/72905605bb25d961.html
- Compiler Error C2124
but could not resolve the issue.
Now I wonder if it is possible to build a shared Rmath
standalone library. Any help?
System Information
Host Name: DESKTOP-DQQRVHG
OS Name: Microsoft Windows 10 Home
OS Version: 10.0.19045 N/A Build 19045
OS Manufacturer: Microsoft Corporation
OS Configuration: Standalone Workstation
OS Build Type: Multiprocessor Free
Registered Owner: N/A
Registered Organization: N/A
Product ID: 00325-96340-08808-AAOEM
Original Install Date: 5/16/2023, 12:41:04 AM
System Boot Time: 10/6/2023, 7:43:19 PM
System Manufacturer: Dell Inc.
System Model: Inspiron 5379
System Type: x64-based PC
Processor(s): 1 Processor(s) Installed.
[01]: Intel64 Family 6 Model 142 Stepping 10 GenuineIntel ~1792 Mhz
BIOS Version: Dell Inc. 1.17.0, 8/18/2021
Windows Directory: C:\WINDOWS
System Directory: C:\WINDOWS\system32
Boot Device: \Device\HarddiskVolume1
System Locale: en-us;English (United States)
Input Locale: en-us;English (United States)
Time Zone: (UTC+05:45) Kathmandu
Total Physical Memory: 8,025 MB
Available Physical Memory: 1,513 MB
Virtual Memory: Max Size: 14,681 MB
Virtual Memory: Available: 5,625 MB
Virtual Memory: In Use: 9,056 MB
Page File Location(s): C:\pagefile.sys
Domain: WORKGROUP
Logon Server: \\DESKTOP-DQQRVHG
Hotfix(s): 11 Hotfix(s) Installed.
[01]: KB5029919
[02]: KB5028951
[03]: KB5003791
[04]: KB5011048
[05]: KB5015684
[06]: KB5030211
[07]: KB5025315
[08]: KB5026879
[09]: KB5028318
[10]: KB5028380
[11]: KB5029709
Network Card(s): 2 NIC(s) Installed.
[01]: Bluetooth Device (Personal Area Network)
Connection Name: Bluetooth Network Connection 2
Status: Media disconnected
[02]: Qualcomm QCA61x4A 802.11ac Wireless Adapter
Connection Name: Wi-Fi
DHCP Enabled: Yes
DHCP Server: 192.168.1.254
IP address(es)
[01]: 192.168.1.67
[02]: fe80::1607:268:b147:61cc
[03]: 2400:1a00:bc10:d1df:55da:fc0d:f87d:de6a
[04]: 2400:1a00:bc10:d1df:a379:9601:4b2c:d38
[05]: 2400:1a00:bc10:d1df::2
Hyper-V Requirements: VM Monitor Mode Extensions: Yes
Virtualization Enabled In Firmware: Yes
Second Level Address Translation: Yes
Data Execution Prevention Available: Yes