架构x86_64的未定义符号:“_GluInit”,引用自Main.o/NetBeans中的

gorkyyrv  于 2022-09-26  发布在  其他
关注(0)|答案(3)|浏览(166)

我的程序是这个西尔宾斯基垫片。我在我的MacBook Pro上使用NetBeans,我相信我已经安装了库,但可能它们没有正确链接。


# include <iostream>

# include <stdio.h>

# include <OpenGL/gl.h>

# include <OpenGL/glu.h>

# include <GLUT/glut.h>

# include <OpenGL/glext.h>

void myinit(){
    glClearColor(1.0,1.0,1.0,1.0);
    glColor3f(1.0,0.0,0.0);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluOrtho2D(0.0,50.0,0.0,50.0);
    glMatrixMode(GL_MODELVIEW);
}

void display(){
    GLfloat vertices[3][2]={{0.0,0.0},{25.0,50.0},{50.0,0.0}};
    int i, j, k;
    int rand();
    GLfloat p[2]={7.5,5.0};
    glClear(GL_COLOR_BUFFER_BIT);
    glBegin(GL_POINTS);

    for(k=0; k<5000; k++){
        j=rand()*3;
        p[0]=(p[0]+vertices[j][0])/2.0;
        p[1]=(p[1]+vertices[j][1])/2.0;
        glVertex2fv(p);
    }

    glEnd();
    glFlush();
}

int main(int argc, char**argv) {
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    glutInitWindowSize(500,500);
    glutInitWindowPosition(0,0);
    glutCreateWindow("Sierpinski Gasket");
    glutDisplayFunc(display);
    myinit();
    glutMainLoop();
}

以下是编译错误:

Undefined symbols for architecture x86_64:
  "_glutInit", referenced from:
      _main in main.o
  "_glutInitDisplayMode", referenced from:
      _main in main.o
  "_glutInitWindowSize", referenced from:
      _main in main.o
  "_glutInitWindowPosition", referenced from:
      _main in main.o
  "_glutCreateWindow", referenced from:
      _main in main.o
  "_glutDisplayFunc", referenced from:
      _main in main.o
  "_glutMainLoop", referenced from:
      _main in main.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
make[2]:***[dist/Debug/GNU-MacOSX/sierpinski] Error 1
make[1]:***[.build-conf] Error 2
make:***[.build-impl] Error 2
ndh0cuux

ndh0cuux1#

你需要将供过于求的框架联系起来。在项目属性>链接器>命令行>其他选项中,指定

-framework GLUT
mznpcxlj

mznpcxlj2#

代码中的细微更正:

j = rand() % 3;

而不是rand() * 3;。这给SEG带来了缺陷,原因很明显。

ckocjqey

ckocjqey3#

在安装Jasper的上下文中,补充@user55721的GLUT框架答案。

安装文档提到了一个特定于ARCH的cmake选项,以在Mac OS上使用原生Glut:
在Mac OSX下构建Jasper软件时,官方只支持使用OpenGL的本地框架。如果您的系统上安装了Freeglut库,则需要确保构建过程使用本机GLUT库(而不是Freeglut库)。这可以通过向cmake命令行添加一个类似以下内容的额外选项来实现:

-DGLUT_glut_LIBRARY=/System/Library/Frameworks/GLUT.framework

相关问题