簡體   English   中英

MinGW GLEW 未定義的引用

[英]MinGW GLEW undefined references

當我編譯我的 OpenGL 項目時,我收到警告,然后是錯誤:

(注意:日志對於 Stack Overflow 來說太大了,所以我不得不提交給 Pastebin,但它也超過了 Free 用戶的 512k 限制,所以我不得不將其拆分為多個粘貼: https://pastebin.com/ 4P8HrVs9 https://pastebin.com/NyLn2KWZ https://pastebin.com/VR2LdPDC

main.cpp的來源:

/* Test Game Main Source File
 * Copyright (C) 2020 (REDACTED)
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * any later version. */

#include <iostream>
#include <glew.c>
using namespace std;

int main() {
    return 0;
}

導致這些警告的問題是您包含 a.c 文件,特別是#include <glew.c> 您應該始終只包含.h 文件,除非您知道自己在做什么,即使那樣也不建議這樣做。

C++ 中的定義聲明之間存在差異。 每個變量 function 和 class 在整個項目中只能有一個定義 - 在所有構建模塊和所有鏈接庫中 - 但可以有多個聲明。 定義在.c 文件中,因此.c 文件不應該被編譯兩次,甚至不應該通過將它們包含在不同的文件中來間接編譯。 您需要#include <GL/glew.h>代替。 關於這個主題的簡短文章在這里: https://www.geeksforgeeks.org/difference-between-definition-and-declaration/

奇怪的是,您甚至可以使用glew.c文件。 這可能表明您沒有正確設置您的庫,也許您剛剛下載了 GLEW 源並且可能沒有正確地將它包含在您的項目中。 如果即使在修復了錯誤的包含后未定義的引用錯誤仍然存在,您需要提供有關如何設置項目以與 glew 鏈接的更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM