I am trying to use GSL in Rust https://docs.rs/GSL/6.0.0/rgsl/ but am having trouble as I am very new to Rust. Every other crate I have tried to use just works by including the dependency in the Cargo.toml file. However, it doesn't seem to be this simple for this crate.
I have GSL installed and in Visual Studio 2022 I can successfully include it and I successfully built a program which uses functions from the library in C++.
#include <iostream>
#include <gsl/gsl_specfunc.h>
int main()
{
double k = 0.5;
double k_prime = sqrt(1 - k * k);
double K = gsl_sf_ellint_Kcomp(k, GSL_PREC_DOUBLE);
double K_prime = gsl_sf_ellint_Kcomp(k_prime, GSL_PREC_DOUBLE);
std::cout << K/K_prime << "\n";
}
I use IntelliJ as my Rust IDE, and I have a project with a Cargo.toml
[package]
name = "rust-gsl-test"
version = "0.1.0"
edition = "2021"
[dependencies]
GSL = "4.0"
In IntelliJ's terminal, when I type cargo build
, I get
error: linking with `link.exe` failed: exit code: 1181
|
= note: "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.33.31629\\bin\\HostX64\\x64\\link.exe" "/DEF:C:\\Users\\etcto\\AppData\\Local\\Temp\\rustckB
WI9y\\lib.def" "/NOLOGO" "C:\\Users\\etcto\\AppData\\Local\\Temp\\rustckBWI9y\\symbols.o" "D:\\GitHub\\rust-ellint\\target\\debug\\deps\\gsl_sys-0d1cd764caa3b2be.gsl_sys.59103b07-cgu.0
.rcgu.o" "D:\\GitHub\\rust-ellint\\target\\debug\\deps\\gsl_sys-0d1cd764caa3b2be.gsl_sys.59103b07-cgu.1.rcgu.o" "D:\\GitHub\\rust-ellint\\target\\debug\\deps\\gsl_sys-0d1cd764caa3b2be.
gsl_sys.59103b07-cgu.10.rcgu.o" "D:\\GitHub\\rust-ellint\\target\\debug\\deps\\gsl_sys-0d1cd764caa3b2be.gsl_sys.59103b07-cgu.11.rcgu.o" "D:\\GitHub\\rust-ellint\\target\\debug\\deps\\g
sl_sys-0d1cd764caa3b2be.gsl_sys.59103b07-cgu.12.rcgu.o" "D:\\GitHub\\rust-ellint\\target\\debug\\deps\\gsl_sys-0d1cd764caa3b2be.gsl_sys.59103b07-cgu.2.rcgu.o" "D:\\GitHub\\rust-ellint\
\target\\debug\\deps\\gsl_sys-0d1cd764caa3b2be.gsl_sys.59103b07-cgu.3.rcgu.o" "D:\\GitHub\\rust-ellint\\target\\debug\\deps\\gsl_sys-0d1cd764caa3b2be.gsl_sys.59103b07-cgu.4.rcgu.o" "D:
\\GitHub\\rust-ellint\\target\\debug\\deps\\gsl_sys-0d1cd764caa3b2be.gsl_sys.59103b07-cgu.5.rcgu.o" "D:\\GitHub\\rust-ellint\\target\\debug\\deps\\gsl_sys-0d1cd764caa3b2be.gsl_sys.5910
3b07-cgu.6.rcgu.o" "D:\\GitHub\\rust-ellint\\target\\debug\\deps\\gsl_sys-0d1cd764caa3b2be.gsl_sys.59103b07-cgu.7.rcgu.o" "D:\\GitHub\\rust-ellint\\target\\debug\\deps\\gsl_sys-0d1cd76
4caa3b2be.gsl_sys.59103b07-cgu.8.rcgu.o" "D:\\GitHub\\rust-ellint\\target\\debug\\deps\\gsl_sys-0d1cd764caa3b2be.gsl_sys.59103b07-cgu.9.rcgu.o" "D:\\GitHub\\rust-ellint\\target\\debug\
\deps\\gsl_sys-0d1cd764caa3b2be.3ehg95o16e12j0cb.rcgu.rmeta" "/LIBPATH:D:\\GitHub\\rust-ellint\\target\\debug\\deps" "/LIBPATH:C:\\Users\\etcto\\.rustup\\toolchains\\stable-x86_64-pc-w
indows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib" "gsl.lib" "gslcblas.lib" "D:\\GitHub\\rust-ellint\\target\\debug\\deps\\liblibc-33d50219ec2d56d1.rlib" "/LIBPATH:C:\\Users\\etct
o\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib" "std-fdaa63d6970be740.dll.lib" "C:\\Users\\etcto\\.rustup\\toolchains\\stable-x86_64-p
c-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libcompiler_builtins-3f507ba7adac1c2a.rlib" "legacy_stdio_definitions.lib" "kernel32.lib" "advapi32.lib" "userenv.lib" "kerne
l32.lib" "ws2_32.lib" "bcrypt.lib" "msvcrt.lib" "legacy_stdio_definitions.lib" "/NXCOMPAT" "/LIBPATH:C:\\Users\\etcto\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\
\x86_64-pc-windows-msvc\\lib" "/OUT:D:\\GitHub\\rust-ellint\\target\\debug\\deps\\gsl_sys-0d1cd764caa3b2be.dll" "/OPT:REF,NOICF" "/DLL" "/IMPLIB:D:\\GitHub\\rust-ellint\\target\\debug\
\deps\\gsl_sys-0d1cd764caa3b2be.dll.lib" "/DEBUG" "/NATVIS:C:\\Users\\etcto\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\intrinsic.natvis" "/NATVIS:C:\\Users
\\etcto\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\liballoc.natvis" "/NATVIS:C:\\Users\\etcto\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\libcore.natvis" "/NATVIS:C:\\Users\\etcto\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\libstd.natvis"
= note: LINK : fatal error LNK1181: cannot open input file 'gsl.lib'
error: could not compile `GSL-sys` due to previous error
and when I try to run a very basic "main.rs", I get
Compiling GSL-sys v2.0.2
error: linking with `link.exe` failed: exit code: 1181
|
= note: "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.33.31629\\bin\\HostX64\\x64\\link.exe" "/DEF:C:\\Users\\etcto\\AppData\\Local\\Temp\\rustcFvqjHf\\lib.def" "/NOLOGO" "C:\\Users\\etcto\\AppData\\Local\\Temp\\rustcFvqjHf\\symbols.o" "D:\\GitHub\\rust-ellint\\target\\debug\\deps\\gsl_sys-0d1cd764caa3b2be.gsl_sys.59103b07-cgu.0.rcgu.o" "D:\\GitHub\\rust-ellint\\target\\debug\\deps\\gsl_sys-0d1cd764caa3b2be.gsl_sys.59103b07-cgu.1.rcgu.o" "D:\\GitHub\\rust-ellint\\target\\debug\\deps\\gsl_sys-0d1cd764caa3b2be.gsl_sys.59103b07-cgu.10.rcgu.o" "D:\\GitHub\\rust-ellint\\target\\debug\\deps\\gsl_sys-0d1cd764caa3b2be.gsl_sys.59103b07-cgu.11.rcgu.o" "D:\\GitHub\\rust-ellint\\target\\debug\\deps\\gsl_sys-0d1cd764caa3b2be.gsl_sys.59103b07-cgu.12.rcgu.o" "D:\\GitHub\\rust-ellint\\target\\debug\\deps\\gsl_sys-0d1cd764caa3b2be.gsl_sys.59103b07-cgu.2.rcgu.o" "D:\\GitHub\\rust-ellint\\target\\debug\\deps\\gsl_sys-0d1cd764caa3b2be.gsl_sys.59103b07-cgu.3.rcgu.o" "D:\\GitHub\\rust-ellint\\target\\debug\\deps\\gsl_sys-0d1cd764caa3b2be.gsl_sys.59103b07-cgu.4.rcgu.o" "D:\\GitHub\\rust-ellint\\target\\debug\\deps\\gsl_sys-0d1cd764caa3b2be.gsl_sys.59103b07-cgu.5.rcgu.o" "D:\\GitHub\\rust-ellint\\target\\debug\\deps\\gsl_sys-0d1cd764caa3b2be.gsl_sys.59103b07-cgu.6.rcgu.o" "D:\\GitHub\\rust-ellint\\target\\debug\\deps\\gsl_sys-0d1cd764caa3b2be.gsl_sys.59103b07-cgu.7.rcgu.o" "D:\\GitHub\\rust-ellint\\target\\debug\\deps\\gsl_sys-0d1cd764caa3b2be.gsl_sys.59103b07-cgu.8.rcgu.o" "D:\\GitHub\\rust-ellint\\target\\debug\\deps\\gsl_sys-0d1cd764caa3b2be.gsl_sys.59103b07-cgu.9.rcgu.o" "D:\\GitHub\\rust-ellint\\target\\debug\\deps\\gsl_sys-0d1cd764caa3b2be.3ehg95o16e12j0cb.rcgu.rmeta" "/LIBPATH:D:\\GitHub\\rust-ellint\\target\\debug\\deps" "/LIBPATH:C:\\Users\\etcto\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib" "gsl.lib" "gslcblas.lib" "D:\\GitHub\\rust-ellint\\target\\debug\\deps\\liblibc-33d50219ec2d56d1.rlib" "/LIBPATH:C:\\Users\\etcto\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib" "std-fdaa63d6970be740.dll.lib" "C:\\Users\\etcto\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libcompiler_builtins-3f507ba7adac1c2a.rlib" "legacy_stdio_definitions.lib" "kernel32.lib" "advapi32.lib" "userenv.lib" "kernel32.lib" "ws2_32.lib" "bcrypt.lib" "msvcrt.lib" "legacy_stdio_definitions.lib" "/NXCOMPAT" "/LIBPATH:C:\\Users\\etcto\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib" "/OUT:D:\\GitHub\\rust-ellint\\target\\debug\\deps\\gsl_sys-0d1cd764caa3b2be.dll" "/OPT:REF,NOICF" "/DLL" "/IMPLIB:D:\\GitHub\\rust-ellint\\target\\debug\\deps\\gsl_sys-0d1cd764caa3b2be.dll.lib" "/DEBUG" "/NATVIS:C:\\Users\\etcto\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\intrinsic.natvis" "/NATVIS:C:\\Users\\etcto\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\liballoc.natvis" "/NATVIS:C:\\Users\\etcto\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\libcore.natvis" "/NATVIS:C:\\Users\\etcto\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\libstd.natvis"
= note: LINK : fatal error LNK1181: cannot open input file 'gsl.lib'
error: aborting due to previous error
error: could not compile `GSL-sys` due to 2 previous errors
Process finished with exit code 101
where main.rs is
use rgsl;
fn main() {
k = 2;
K = rgsl::pow::Pow::pow_2(&k);
println!("{K}")
}