使用 gcc for Linux & Cygwin 链接到 Gnu 科学库有很好的文档。
在这里,我在 Windows 7 上工作,我所拥有的只是lcc
编译器(http://www.cs.virginia.edu/~lcc-win32/,其中包括 lcc64 和 lcclnk64)和适用于 Windows 64 位的 GSL 库(https ://code.google.com/p/oscats/downloads/detail?name=gsl-1.15-dev-win64.zip&can=2&q= )。
我没有 cygwin/mingw/msys/Visual Studio。
我的问题lcc
与gsl-1.15-dev-win64.zip
. 测试代码是
#include <stdio.h>
#include <gsl/gsl_sf_gamma.h>
int main (void)
{
double a = 20;
double b = 10;
double x = 0.5;
double result = gsl_sf_beta_inc(a, b, x);
printf("%f\n", result);
return 0;
}
编译不是问题。使用链接到 gsl 静态库lcclnk64
是个问题。我尝试了以下变体:
lcclnk64 test.obj -Lc:\gsl\lib -lgsl
首先编译,然后链接,或者通过一个调用lcc64
运行整个过程,使用, ,然后重命名为,并且有/没有. 我仍然得到:lc64
libgsl.dll.a
libgsl.a
lgsl
libgsl.lib
libgsl.dll.a
libgsl.lib
-subsystem console
connect test.obj .text: undefined reference to 'gsl_sf_beta_inc'
我想链接到静态 GSL 库以获得独立的exe
,在 Windows 7 上并使用lcc
,如果我必须共享exe
. 获取test.obj
很容易,获取链接的对象libgsl.???
完全让我感到困惑。感谢您的任何指示。
编辑:
我得到以下编译和链接没有错误,但是当我运行时,test.exe
我得到一个错误对话框,告诉我缺少一个 DLL,我需要重新安装程序。
lcc64 test.c -Ic:\gsl\include
lcclnk64 test.obj libgsl.lib -Lc:\gsl\lib -subsystem console