小编Roh*_*han的帖子

在Windows上使用GSL(编译,链接等).分步指南

我需要使用GSL(GNU Scientific Library)编写一些C代码,之前从未使用过库.

我是一名物理学家,而不是计算机科学家,并且在GNU文档中使用了很多术语.

在过去的几个小时里,我对如何在Windows 7机器上使用GSL感到非常困惑.我已经尝试在这个网站和其他网站上阅读了很多问题,但很多术语都在我脑海中浮现.

通常,当我编写程序时,我会执行以下步骤:

1)打开notepad ++,包含我自己的任何头文件并编写我的代码.

2)通过打开Windows命令提示符并键入以下内容来编译我的程序:

gcc -Wall -std=c99 -o myfile myfile.c

我将gcc作为环境变量,并通过安装CodeBlocks for Windows安装了gcc(但是,我不使用代码块).

从互联网研究来看,这是我设法使用GSL的方法:

1)从http://gnuwin32.sourceforge.net/packages/gsl.htm下载用于Windows的GSL

2)将它安装在桌面上,这样我的Path就没有空格字符了(我在路径中读取空格可能是个问题).

3)将我的路径环境变量设置为.dll的位置: C:\Users\Rohan\Desktop\GnuWin32\bin;

4)尝试编译GSL示例程序:

#include <stdio.h>
#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;
}
Run Code Online (Sandbox Code Playgroud)

5)我打电话给编译器如下:

C:\Users\Rohan\Desktop>gcc -Wall -I"C:\Users\Rohan\Desktop\GnuWin32\include" -L"C:\Users\Rohan\Desktop\GnuWin32\lib" -lgslcblas -lgsl -lm -o test test.c
Run Code Online (Sandbox Code Playgroud)

这导致以下错误消息:

C:\Users\Rohan\AppData\Local\Temp\ccW8cO7I.o:test.c:(.text+0x30): undefined reference to `gsl_sf_bessel_J0'
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

由于没有CS的背景知识,大部分工作都是在很少理解的情况下完成的.

我是否走在正确的轨道上?是否有一个简单的分步指南,我可以遵循非技术语言来使这个工作?

任何帮助将不胜感激,谢谢!

c windows linker gcc gsl

12
推荐指数
1
解决办法
8189
查看次数

在c中访问数组的-1元素

我有一个结构数组,它是动态分配的.指向此数组的指针将传递给其他函数.

struct body{
    char* name; 
    double mass; 
    // ... some more stuff
    };

 body *bodies = malloc(Number_of_bodies*sizeof(body));
Run Code Online (Sandbox Code Playgroud)

我需要知道数组的大小,所以我将大小存储在其中一个结构中,它位于数组的第0个元素(第一个结构)中.

bodies[0].mass = (double)Number_of_bodies;
Run Code Online (Sandbox Code Playgroud)

然后我从函数返回一个指向数组的第一个元素的指针,即 bodies[1]

  return (bodies+1); 
Run Code Online (Sandbox Code Playgroud)

现在,当我在其他函数中使用此指针时,数据应该从第0个元素开始.

  body *new_bodies = (bodies+1);     //Just trying to show what happens effectively when i pass to another function
  new_bodies[0] = *(bodies+1);       //I Think
Run Code Online (Sandbox Code Playgroud)

如果我想看到初始结构,那是bodies[0]什么意思,在我必须访问的其他函数中意味着new_bodies[-1]什么?

这是我能做的吗?我如何访问初始结构?

c arrays struct pointers dynamic

5
推荐指数
1
解决办法
173
查看次数

GNUplot Autoscale将xrange设置为等于yrange

我正在使用GNUplot来绘制数据文件的轨道.我想使用,autoscale xy以便GNUplot脚本不需要根据数据进行编辑.但是,当我绘图时,autoscale没有设置xrange为相同yrange.这使得轨道看起来"被压扁".

我尝试过使用set size squareset size ratio -1 如何在gnuplot中设置相等比例的长度.

但这没效果.

无论如何强制autoscale使x和y范围相等?

谢谢!

plot gnuplot

5
推荐指数
1
解决办法
2158
查看次数

标签 统计

c ×2

arrays ×1

dynamic ×1

gcc ×1

gnuplot ×1

gsl ×1

linker ×1

plot ×1

pointers ×1

struct ×1

windows ×1