【发布时间】:2015-02-21 02:16:21
【问题描述】:
使用 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;
}
编译不是问题。使用lcclnk64 链接到gsl 静态库是个问题。我尝试了以下变体:
lcclnk64 test.obj -Lc:\gsl\lib -lgsl
首先使用lcc64 编译然后链接,或者使用lc64 调用运行整个过程,在将libgsl.dll.a 重命名为libgsl.lib 后使用libgsl.dll.a、libgsl.a、lgsl 和libgsl.lib,和有/没有-subsystem console。我仍然得到:
connect test.obj .text: undefined reference to 'gsl_sf_beta_inc'
我想链接到静态 GSL 库以获得独立的 exe,在 Windows 7 上并使用 lcc,如果我必须共享 exe,则不必使用 exe 发送 dll。获取test.obj 很容易,它让对象链接到libgsl.???,这完全让我感到困扰。感谢您的任何指点。
编辑:
我得到以下编译和链接没有错误,但是当我运行 test.exe 时,我收到一个错误对话框,告诉我缺少 DLL,我需要重新安装程序。
lcc64 test.c -Ic:\gsl\include
lcclnk64 test.obj libgsl.lib -Lc:\gsl\lib -subsystem console
【问题讨论】: