[問題] Opengl無法解析的外部符號

看板C_and_CPP (C/C++)作者 (Nestarneal)時間14年前 (2012/05/30 17:15), 編輯推噓5(5029)
留言34則, 4人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Visual Studio 2010 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) OpenGL 問題(Question): 畫面:http://i.imgur.com/IAz30.png
我用"/'搜尋過,看起來問題都是兩部分 1. 開錯專案 2. lib要加入linker的input中 可是我的狀況是: 1. 原本完全無問題,修改完程式碼以後出錯 2. 起初以為是程式碼問題,改回原本以後還是錯 3. 開啟另外一個專案編譯,因為該專案是之前寫的, 後來也沒改過,所以照理來說會沒問題, 但是同樣也出現此畫面 所以是原本可以,不曉得為什麼後來不行, 因此我想應該不會是第一種可能性。 第二種可能性的話如圖中我將所有lib都放入, 不過結果也還是不行。 最納悶的是明明原本可以,只是修改幾行以後就突然不行, 但是將程式碼復原成修改前的樣子也還是會有錯誤。 想請教一下我還漏了什麼步驟呢? 謝謝 :) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.38.22.165

05/30 20:15, , 1F
這邊看不出來怎麼造成連結問題的
05/30 20:15, 1F

05/30 20:16, , 2F
但是你目前是使用glut還是freeglut?應該只要其中一者
05/30 20:16, 2F

05/30 20:17, , 3F
因為我看見你的library有放freeglut,用這個就不要glut
05/30 20:17, 3F

05/30 20:17, , 4F
然後還要考慮一下你的head檔案是否改用了freeglut的
05/30 20:17, 4F

05/30 20:18, , 5F
freeglut有一個用來和glut相容的head檔,請改用那個
05/30 20:18, 5F

05/30 21:19, , 6F
我把glut32.lib刪掉留下剩餘的變這樣:
05/30 21:19, 6F

05/30 21:19, , 7F

05/30 21:19, , 8F
程式碼算蠻短的,如下:
05/30 21:19, 8F

05/30 21:19, , 9F

05/30 21:20, , 10F
我記得之前寫完直接編譯就可以過沒有特別做過設定,
05/30 21:20, 10F

05/30 21:20, , 11F
怎麼現在會突然出錯,實在是很不瞭解...
05/30 21:20, 11F

05/30 22:06, , 12F
怎麼看都是project設定問題,但是似乎不只lib那邊而已
05/30 22:06, 12F

05/30 22:07, , 13F
如果改不出來就重新建一個新的專案,然後加上所有設定
05/30 22:07, 13F

05/30 22:09, , 14F
另外我還想到,你可以直接include freeglut看看
05/30 22:09, 14F

05/30 22:09, , 15F
你的gl/glut.h說不定是用到原本的glut
05/30 22:09, 15F

05/30 22:10, , 16F
因為編譯會過,但是連結的時候函數的實體找不到了
05/30 22:10, 16F

05/30 23:52, , 17F
LIB那邊多加一個 OpenGL32.Lib 試試?
05/30 23:52, 17F

05/30 23:52, , 18F
link不到的func看起來都是GL core自己的, 不確定圖裡那
05/30 23:52, 18F

05/30 23:53, , 19F
些相關輔助的.lib有沒有誰有link OpenGL32.lib....@_@"
05/30 23:53, 19F

05/31 00:21, , 20F
希望是樓上說的問題,我平常使用vc2005所以沒注意到
05/31 00:21, 20F

05/31 00:22, , 21F
因為我隱約知道新版VC慢慢把一些openGL lib檔拿掉了
05/31 00:22, 21F

05/31 00:22, , 22F
我記得好像從vc2009之後就把glaux.lib拿掉了
05/31 00:22, 22F

05/31 00:23, , 23F
如果之後的版本又拿掉一些東西,真的不奇怪
05/31 00:23, 23F

05/31 01:01, , 24F
加了以後它還是顯示一樣的畫面,好怪...
05/31 01:01, 24F

05/31 23:57, , 25F
我覺得你可以用tool把你lib的symbol dump出來看 到底有沒有
05/31 23:57, 25F

05/31 23:58, , 26F
很明顯你加了這些lib 卻沒半個包含你用的symbol 先check 一下
05/31 23:58, 26F

06/01 00:10, , 27F
我在我這邊2010 加入opengl32.lib 就可以compile過拉
06/01 00:10, 27F

06/01 01:21, , 28F
Q大的方法我沒試過,不過之前的方法都不行,重灌也是
06/01 01:21, 28F

06/01 01:22, , 29F
最後我是請同學把include跟lib資料夾內容都抓給我就可
06/01 01:22, 29F

06/01 01:22, , 30F
以了。如果從解決方法看似乎是有缺檔案,可是我不是
06/01 01:22, 30F

06/01 01:23, , 31F
一開始就不行,而是中途改程式碼改到一半才突然錯誤...
06/01 01:23, 31F

06/01 01:23, , 32F
也就是從行→不行中間我只有改程式碼沒改別的...所以
06/01 01:23, 32F

06/01 01:24, , 33F
問題在哪還是不明囧。不過順利解決還是鬆了一口氣,
06/01 01:24, 33F

06/01 01:24, , 34F
謝謝各位 :)
06/01 01:24, 34F
文章代碼(AID): #1FnUKSmK (C_and_CPP)
文章代碼(AID): #1FnUKSmK (C_and_CPP)