C++ 错误:对“<func name>”的未定义引用和 ld 返回 1 个退出状态 [重复]
Posted
技术标签:
【中文标题】C++ 错误:对“<func name>”的未定义引用和 ld 返回 1 个退出状态 [重复]【英文标题】:C++ Error: Undefined reference to "<func name>" and ld returned 1 exit status [duplicate] 【发布时间】:2020-01-11 16:35:11 【问题描述】:我创建了一个 OpenGL 项目来绘制形状。但是,当我尝试编译程序时,会出现一些错误。 以下是 Shapes.h 的内容:
#ifndef SHAPES_INCLUDE
#define SHAPES_INCLUDE
void Triangle(int x1, int y1, int x2, int y2, int x3, int y3 , float r, float g, float b);
#endif
这是“Shapes.cpp”的内容:
#include "Shapes.h"
#include <GL/glx.h>
#include <GL/gl.h>
#include <GL/glut.h>
void Triangle(int x1, int y1, int x2, int y2, int x3, int y3 , float r, float g, float b)
glColor3f(r,g,b);
glBegin(GL_TRIANGLES);
glVertex2i(x1,y1);
glVertex2i(x2,y2);
glVertex2i(x3,y3);
glEnd();
作为参考,这里是我的“main.cpp”的内容:
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <GL/glx.h>
#include <GL/gl.h>
#include <GL/glut.h>
// our libraries:
#include "libraries/Shapes.h"
void init()
glClearColor(1.0,1.0,1.0,0.0);
glMatrixMode(GL_PROJECTION);
gluOrtho2D(0.0,200.0,0.0,150.0);
void lineSegment()
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.0,0.0,1.0);
glBegin(GL_TRIANGLES);
glVertex2i(20,120);
glVertex2i(40,20);
glVertex2i(80,20);
glEnd();
glFlush();
void glLoop()
Triangle(20,120,40,20,80,20,0.0,0.0,1.0);
glFlush();
int main(int argc, char**argv)
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
glutInitWindowPosition(50,100);
glutInitWindowSize(400,300);
glutCreateWindow("OpenGL window");
init();
glutDisplayFunc(glLoop);
glutMainLoop();
return 0;
当我用g++ main.cpp -lGL -lGLU -lglut
编译它时,我得到了这个错误:
/tmp/ccSGyfe8.o: In function `glLoop()':
main.cpp:(.text+0xf3): undefined reference to `Triangle(int, int, int, int, int, int, float, float, float)'
collect2: error: ld returned 1 exit status
谁能帮我解决它?
【问题讨论】:
g++ main.cpp Shapes.cpp -lGL -lGLU -lglut
。或者,首先将.cpp
编译为.o
(目标文件),然后链接它们。
【参考方案1】:
您没有链接包含Triangle
定义的目标文件。
【讨论】:
以上是关于C++ 错误:对“<func name>”的未定义引用和 ld 返回 1 个退出状态 [重复]的主要内容,如果未能解决你的问题,请参考以下文章