SiftGPU:编译SiftGPU出现问题-无法解析的外部符号 glutInit
OpenCV出現(xiàn)了ORB特征和SURF的GPU版本,
參考:opencv上gpu版surf特征點(diǎn)與orb特征點(diǎn)提取及匹配實(shí)例 至于使用什么并行API暫時(shí)沒(méi)有探究。
但沒(méi)有發(fā)現(xiàn)OpenCV-SIFT的GPU使用。需要自行編譯,參考:編譯Opencv的GPU,利用CUDA加速
SiftGPU的原始庫(kù)可以編譯通過(guò)。但不能使用,在使用時(shí)引出了一連串96個(gè)編譯錯(cuò)誤。
1.Glew函數(shù)錯(cuò)誤
1>flatten.obj : error LNK2001: 無(wú)法解析的外部符號(hào) __imp____glewGetShaderInfoLog 1>flatten.obj : error LNK2001: 無(wú)法解析的外部符號(hào) __imp____glewGetShaderiv 1>flatten.obj : error LNK2001: 無(wú)法解析的外部符號(hào) __imp____glewGetProgramInfoLog 1>flatten.obj : error LNK2001: 無(wú)法解析的外部符號(hào) __imp____glewGetProgramiv 1>flatten.obj : error LNK2001: 無(wú)法解析的外部符號(hào) __imp____glewUseProgram 1>flatten.obj : error LNK2001: 無(wú)法解析的外部符號(hào) __imp____glewLinkProgram 1>flatten.obj : error LNK2001: 無(wú)法解析的外部符號(hào) __imp____glewAttachShader 1>flatten.obj : error LNK2001: 無(wú)法解析的外部符號(hào) __imp____glewCreateProgram 1>flatten.obj : error LNK2001: 無(wú)法解析的外部符號(hào) __imp____glewCompileShader 1>flatten.obj : error LNK2001: 無(wú)法解析的外部符號(hào) __imp____glewShaderSource 1>flatten.obj : error LNK2001: 無(wú)法解析的外部符號(hào) __imp____glewCreateShader 1>flatten.obj : error LNK2019: 無(wú)法解析的外部符號(hào) __imp__glewIsSupporte解決方法:
?????? 更新Glew到2.0版本
2.更新Glew之后,顯示對(duì)于原始GlobalUtil.obj 工程仍含有未解析glut函數(shù)體:
1>siftgpu.lib(GlobalUtil.obj) : error LNK2001: 無(wú)法解析的外部符號(hào) glutInit 1>siftgpu.lib(GlobalUtil.obj) : error LNK2001: 無(wú)法解析的外部符號(hào) glutInitDisplayMode 1>siftgpu.lib(GlobalUtil.obj) : error LNK2001: 無(wú)法解析的外部符號(hào) glutInitWindowPosition 1>siftgpu.lib(GlobalUtil.obj) : error LNK2001: 無(wú)法解析的外部符號(hào) glutCreateWindow 1>siftgpu.lib(GlobalUtil.obj) : error LNK2001: 無(wú)法解析的外部符號(hào) glutDestroyWindow 1>siftgpu.lib(GlobalUtil.obj) : error LNK2001: 無(wú)法解析的外部符號(hào) glutGetWindow 1>siftgpu.lib(GlobalUtil.obj) : error LNK2001: 無(wú)法解析的外部符號(hào) glutSetWindow 1>siftgpu.lib(GlobalUtil.obj) : error LNK2001: 無(wú)法解析的外部符號(hào) glutHideWindow 1>E:\CodeBase\CodeValidSource\SLAM\ORB_SLAM_Wish\Build\Win\ORBSLAM\x64\Release\SlamFrame.exe : fatal error LNK1120: 8 個(gè)無(wú)法解析的外部命令找不到合適的glut版本,暫時(shí)無(wú)法解決。
更正方法:
2.1. 去掉原始Sift工程中所有的 #include "GlobalUtil.h" 語(yǔ)句
??? 此方法不可取!
2.2. 注銷掉GlobalUtil.cpp里面所有的GLut函數(shù)
結(jié)果:
?????? 整個(gè)顯示界面不能使用,因此也不必使用!Glut問(wèn)題也成為懸著的問(wèn)題。
?????? 然而不能使用,在初始化時(shí)候出現(xiàn)問(wèn)題,因此必須解決Glut問(wèn)題。
解決方法:
?????? 64位版本使用32位版本問(wèn)題。
????? 32位版的很好找,網(wǎng)上一找一堆,可是64位版的相對(duì)比較難找,更有人說(shuō)glut不支持64位的開(kāi)發(fā),搞的小菜一度想放棄。就在我快要放棄的時(shí)候,一個(gè)大神跳出來(lái)跟我說(shuō),納尼,誰(shuí)說(shuō)沒(méi)有64bit的??!!
????? 不多說(shuō),直接給網(wǎng)址:http://download.csdn.net/detail/knownall/6799947這是glut3.7.6,里面包含debug/release,32bit和64bit。
????? 當(dāng)然也可以選擇下載源碼自己編譯:?http://download.csdn.net/detail/knownall/6799967?自己編譯的應(yīng)該感覺(jué)起來(lái)比較爽,小菜便是這么做滴。
?????? 使用Glut的64位版本。下載地址:http://download.csdn.net/download/knownall/6799947
總結(jié)
以上是生活随笔為你收集整理的SiftGPU:编译SiftGPU出现问题-无法解析的外部符号 glutInit的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 三维重建:闭环检测-相机闭环
- 下一篇: OpenCV:Adaboost训练时数据