0

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}")
}
Teddy_Tort
  • 87
  • 2
  • 10
  • The [`GSL`](https://github.com/Microsoft/gsl) library (C++ Core Guidelines Support Library) you have installed has nothing in common with the [`GSL`](https://www.gnu.org/software/gsl/) library (GNU Scientific Library) the `rgsl` crate relies on. Same name, but different purposes. – prog-fh Nov 12 '22 at 19:10
  • Oh, good catch, it's this one that I want https://github.com/BrianGladman/gsl, but I have GNU Sci Lib on my computer because I have a working C++ program using it. – Teddy_Tort Nov 12 '22 at 20:06

0 Answers0