第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

通過Windows cgo-> gcc-> ld進(jìn)行的DLL鏈接給出了“(函數(shù))的未定義引用”錯(cuò)誤。

通過Windows cgo-> gcc-> ld進(jìn)行的DLL鏈接給出了“(函數(shù))的未定義引用”錯(cuò)誤。

Go
元芳怎么了 2021-04-30 15:15:59
我真的更喜歡GLFW而不是Glut,并且想要在Go 1.0.1 64位的Windows 64位環(huán)境下使用它的Golang綁定。在Linux下,綁定可以完美地工作。這在原則上是可行的Windows下- GitHub的用戶家校會(huì)設(shè)法來做到這一點(diǎn),但他是在Win32和他的提示沒有解決我的問題呢。但是,我確實(shí)基于tdm64-gcc-4.6.1設(shè)置了完整且干凈的Mingw64?,F(xiàn)在這是一件奇怪的事情-使freeglut綁定在64位Windows,64位Go 1.0.1下可以工作-glfw綁定對我來說失敗了。我想弄清楚為什么,因?yàn)樗鼈儽举|(zhì)上都使用相同的cgo功能和技術(shù)。注意,我目前有一個(gè)自制的,半熟但基本上可以正常工作的替換軟件包,該軟件包使用LoadLibrary / GetProcAddress調(diào)用在Go中公開glfw.dll。這行得通,但我認(rèn)為硬連接的內(nèi)置CGO綁定比無數(shù)Syscall(),Syscall6(),Syscall9(),Syscall12()等Go func調(diào)用更為可取。如果Win32和Linux gophers可以擁有此功能,為什么我們不Win64呢?到目前為止,這是我的設(shè)置:我有一個(gè)帶有三個(gè)補(bǔ)丁的Golang版本,以使lib鏈接在應(yīng)用cgo時(shí)起作用我已經(jīng)使用MinGW64成功地將最新的freeglut和GLFW庫編譯為64位DLL。頭文件glut.h,freeglut * .h和glfw.h放在\ MinGW64 \ x86_64-w64-mingw32 \ include \ GL中(在gl.h,gloux.h,glu.h之后)庫文件libfreeglut.a和libglfwdll.a放在\ MinGW64 \ x86_64-w64-mingw32 \ lib(libglu32.a,libopengl32.a旁邊)中64位dll glfw.dll和freeglut64.dll放在\ windows和\ windows \ system32中(opengl32.dll,glu32.dll旁邊)我相信freeglut64.dll和glfw.dll都可以工作-至少在安裝DLL之后,它們的大多數(shù)示例程序都可以運(yùn)行。一切都應(yīng)該準(zhǔn)備就緒,對不對?現(xiàn)在首先要進(jìn)行成功綁定(我不需要),freeglut-當(dāng)我進(jìn)入-x github.com/zombiezen/Go-GLUT/glut時(shí),一切都構(gòu)建良好,我可以成功創(chuàng)建一個(gè)glut窗口,在從.go源文件編譯的Windows test.exe中顯示一個(gè)三角形。感謝-x,go get演示了它的構(gòu)建過程:是的,這是一個(gè)很麻煩的工作-但實(shí)際上始終是相同的錯(cuò)誤,并且在構(gòu)建過程中相當(dāng)晚。請注意,如果未定義#define GLFW_DLL,除沒有__imp_前綴外,我得到的輸出基本上是相同的-靜態(tài)鏈接既不鼓勵(lì)使用Go,也不適合此特定用例?,F(xiàn)在,當(dāng)gcc抱怨“未定義的引用”時(shí),根據(jù)我在Google上的搜索,可能有多種原因...找不到DLL不會(huì)失敗-它們位于適當(dāng)?shù)奈恢?,對于freeglut64.dll,它可以正常工作找不到.a庫肯定是成功的-它們在適當(dāng)?shù)奈恢?,并且libfreeglut.a可以工作,如果我將-lglfwdll更改為-lblafoobar,則gcc會(huì)更早地失敗并正確地抱怨“找不到blafoobar”-因此它確實(shí)找到了libglfwdll.a。庫依賴關(guān)系的順序?我嘗試將-lglfwdll作為第一個(gè)庫(在-lglu32 -lopengl32之前)和最后一個(gè)庫(在這兩個(gè)之后),沒有區(qū)別。Golang glfw綁定有問題嗎?別這么認(rèn)為,它適用于其他人,包括適用于chsc的Windows(32位)TL; DR -在Windows 64位,圍棋1.0.1 64位完全修補(bǔ),CGO成功生成的東西飼料到GCC的兩個(gè)freeglut和GLFW。然后,GCC高興地吃掉了那些東西來建立freeglut綁定,但是拒絕了它來建立glfw綁定,所有C.funcs()都帶有“未定義的引用”。libfreeglut和libglfwdll均已正確構(gòu)建并安裝為64位DLL,并且.h / .a libs均已正確定位??赡苁鞘裁丛??
查看完整描述

3 回答

?
aluckdog

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超7個(gè)贊

最新版本的Go,GLFW和Mingw-w64不再是問題。


查看完整回答
反對 回復(fù) 2021-05-10
?
滄海一幻覺

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超5個(gè)贊

我可以想到兩種可能性:

  1. 這些符號(hào)實(shí)際上不在庫中。您可以使用進(jìn)行檢查nm。確保符號(hào)類型是大寫字母;如果只有小寫代碼,則庫構(gòu)建不正確。

  2. 您有循環(huán)依賴關(guān)系。即,庫A依賴于庫B,而庫B又依賴于A。您可以解決此問題,第二次將庫添加到命令中,或使用鏈接器組(請參閱參考資料ld --help)。

請注意,命令行上的庫順序非常重要:鏈接器按照它們出現(xiàn)的順序依次讀取每個(gè)庫,搜索當(dāng)時(shí)所需的符號(hào),然后繼續(xù)。如果符號(hào)是由較晚的庫首先引用的,則鏈接器將不會(huì)重新訪問較早的庫以查找定義。這就是循環(huán)依賴成為問題的原因。


查看完整回答
反對 回復(fù) 2021-05-10
  • 3 回答
  • 0 關(guān)注
  • 425 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)