2012-04-27 40 views
1

我的最終目標是成功鏈接到Go包中的一些DLL(opengl32.dll glfw.dll和glu32.dll) - 但是trying to link to the go-glfw package gave me "not defined" errorsWindows DLL與cgo鏈接

因此,我決定從%GOROOT%\ misc \ cgo \ life中的簡單未修改示例中,獲得一個非常簡單的cgo動態/共享庫鏈接工作。但是,僅僅調用命令去建立-o生活main.go失敗,基本上是相同的鏈接器錯誤,即:

go-build374967034/_/C_/Go/misc/cgo/life.a(c-life.o)(.text): _assert: not defined 

「沒有定義」 ...只是完全相同的錯誤我試圖鏈接的時候了glfw按照上面的。

這是一個新鮮的未經過調整的版本,安裝了Go 1.0.1,今天上午剛剛在香草,相當新的Win7 64位安裝中下載。什麼可能會出錯?我知道... Windows。願意聽到任何想法......看起來像DLL與CGO的鏈接是一件不容易的事情,並且從我在網上閱讀的內容中很容易做到。然而,即使最簡單的例子也不適合我。

回答

1

我認爲這個特殊的bug已經在這裏討論過了:http://code.google.com/p/go/issues/detail?id=3261 但我不確定它是否可以應用於你的情況。最後從我讀過的,他們提出了一個補丁,但沒有真正嘗試過,因爲我等待1.1版本(希望他們會修復運行時臭名昭着的內存泄漏;))

+0

只是一個說明:沒有「運行時臭名昭着的內存泄漏「,Go有一個保守的垃圾收集器,*在32位系統中,在極少數情況下*意味着垃圾不會被收集。沒有人報告過64位系統的任何問題,無論如何它要快得多,並且測試得更多。 tl; dr:在64位下堅持下去,你應該沒有什麼可擔心的。 – uriel 2012-04-28 12:50:45

+0

是的,有3個修補程序集適用於Go 1.0.1可解決問題:http://groups.google.com/group/golang-nuts/browse_thread/thread/b98c3677ec716379 ...我仍然遇到問題但是,這是另一回事......所以將其標記爲答案。 – metaleap 2012-04-29 02:58:20

+0

只是爲了防止任何人對我非常奇特的glfw-only cgo問題感興趣... http://stackoverflow.com/questions/10369513/dll-linking-via-windows-cgo-gcc-ld-freeglut-works-glfw -doesnt-whats-the-c – metaleap 2012-04-29 04:27:48