使用 Linux 和 Cygwin 的 gcc 链接到 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;
}
编译不是问题。使用lcclnk64
链接到gsl静态库是问题。我尝试过以下变体:
lcclnk64 test.obj -Lc:\gsl\lib -lgsl
首先使用lcc64
进行编译,然后使用libgsl.dll.a
进行链接或通过一次lc64
调用运行整个进程,libgsl.dll.a
重命名为 libgsl.lib< 后的 >libgsl.a
、lgsl
和 libgsl.lib
/code>,以及带/不带-子系统控制台
。我仍然得到:
connect test.obj .text: undefined reference to 'gsl_sf_beta_inc'
我想链接到静态 GSL 库以获得独立的 exe
,在 Windows 7 上并使用 lcc
,而不必随 exe 发送 dll如果我必须共享exe
。获取 test.obj 很容易,它将对象链接到 libgsl.??? 完全阻碍了我。感谢您的指点。
编辑:
我得到了以下编译和链接,没有错误,但是当我运行 test.exe
时,我收到一个错误对话框,告诉我缺少 DLL,我需要重新安装该程序。
lcc64 test.c -Ic:\gsl\include
lcclnk64 test.obj libgsl.lib -Lc:\gsl\lib -subsystem console
最佳答案
如果您无法获得编译器所需的信息,您可以访问此处:
http://mingw-w64.sourceforge.net/download.php#mingw-builds
然后选择/下载/安装您选择的编译器。
关于c - 使用 lccwin64 编译器链接到 GSL 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28641312/