代码之家  ›  专栏  ›  技术社区  ›  jo

与cygwin g一起使用GSL++

  •  4
  • jo  · 技术社区  · 15 年前

    Cygwin使用所有默认参数进行安装和更新,包括gsl:runtime、gsl apps和gsl doc。我正在尝试gsl网站上给出的示例程序:

    http://www.gnu.org/software/gsl/manual/html_node/An-Example-Program.html

    包括

     #include <gsl/gsl_sf_bessel.h>
     int
     main (void)
     {
       double x = 5.0;
       double y = gsl_sf_bessel_J0 (x);
       printf ("J0(%g) = %.18e\n", x, y);
       return 0;
     }
    

    有没有人能给我一个以上程序的版本,它实际上可以与g++一起工作?此默认安装中找不到头文件。如何访问dll?

    我还尝试安装了非默认的“gsd-devel”(开发工具),它允许我访问头文件,但在编译时,我得到了“对“gsl-sf-bessel-J0”的未定义引用,即使找到了头文件。

    非常感谢您的帮助!

    1 回复  |  直到 15 年前
        1
  •  4
  •   user205763 user205763    15 年前

    我也是CygWin&GSL的新手,经过一些研究,我认为答案在于所需的库没有链接。GSL有一个聪明的小工具叫做 gsl-config . 您可以使用它来获取到库的链接信息。所以在你的情况下,密码是:

    
     #include <gsl/gsl_sf_bessel.h>
     #include <stdio.h>
     int
     main (void)
     {
       double x = 5.0;
       double y = gsl_sf_bessel_J0 (x);
       printf ("J0(%g) = %.18e\n", x, y);
       return 0;
     }
    
    可以使用 g++ bessel.cpp -lm -lgsl -o bessel.out -L/usr/bin 其中 -lm -lgsl -L/usr/bin 位是输入的输出 gsl-config --lib-without-cblas . 测试使用 ./bessel.out

    希望这有帮助,T