2014-04-15 63 views
1

我想安裝圖表包的開羅後端。我首先按照說明here (Chart instructions)here (GTK/cairo)安裝了GTK和cairo,並且具有本帖最新版本:cairo-0.12.5.3gtk-0.12.5.7未能安裝開羅:缺少符號_cairo_region_create_rectangles

但是,當試圖使用開羅時,我碰到了一堵牆,並採取了以下步驟。

> cabal install chart-cairo 
Resolving dependencies... 
Configuring Chart-cairo-1.2.2... 
Building Chart-cairo-1.2.2... 
Preprocessing library Chart-cairo-1.2.2... 
[1 of 1] Compiling Graphics.Rendering.Chart.Backend.Cairo (Graphics\Rendering\Chart\Backend\Cairo.hs, dist\build\Graphics\Rendering\Chart\Backend\Cairo.o) 
Loading package ghc-prim ... linking ... done. 
Loading package integer-gmp ... linking ... done. 
Loading package base ... linking ... done. 
Loading package array-0.4.0.1 ... linking ... done. 
Loading package deepseq-1.3.0.1 ... linking ... done. 
Loading package bytestring-0.10.0.2 ... linking ... done. 
Loading package transformers-0.3.0.0 ... linking ... done. 
Loading package mtl-2.1.2 ... linking ... done. 
Loading package utf8-string-0.3.7 ... linking ... done. 
Loading package cairo-0.12.5.3 ... linking ... ghc.exe: C:\Users\user\AppData\Roaming\cabal\i386-windows-ghc-7.6.3\cairo-0.12.5.3\libHScairo-0.12.5.3.a: unknown symbol `_cairo_region_create_rectangles'* 
ghc.exe: unable to load package `cairo-0.12.5.3' 
Failed to install Chart-cairo-1.2.2 
cabal: Error: some packages failed to install: 
Chart-cairo-1.2.2 failed during the building phase. The exception was: 
ExitFailure 1 

其他開羅程序也失敗了。它安裝了Drawing.hs文件,例如,失敗:

Loading package cairo-0.12.5.3 ... linking ... <interactive>: C:\Users\user\AppData\Roaming\cabal\i386-windows-ghc-7.6.3\cairo-0.12.5.3\libHScairo-0.12.5.3.a: unknown symbol `_cairo_region_create_rectangles' 
ghc.exe: unable to load package `cairo-0.12.5.3' 

符號從某文件丟失。 nm將其列爲u(未定義)。

對此有一個開放的bug,但它在三年內沒有被觸及。 (這個bug有一個評論,表明這個問題與Template Haskell有關,但我沒有對TH做任何事情。)

我需要一個更新或更舊版本的cairo庫嗎?上述功能在哪裏定義,爲什麼不在圖書館?如何解決這個問題的任何建議?

謝謝!

編輯 我最終確定的Graphviz和的Gnuplot在%PATH%均高於比GTK捆都有自己cairo.dll。因此,錯誤的一個被運行時鏈接程序獲取。刪除這些路徑元素並嘗試重新安裝所有cairo和GTK。我遇到了一個新問題:

`libHSgtk-0.12.5.7.a: unknown symbol `__imp___fmode'`. 

我試過一個乾淨的安裝Haskell的GTK和開羅包(整個過程),並確保所有的DLL加載這個時間和驗證與Process Explorer中的GTK目錄。可悲的是,我沒有更多時間來處理這個問題,並且必須放棄嘗試在Windows上與Haskell一起工作。也許我會在將來的某一天再嘗試一次。

+0

cairo 0.12是非常非常古老的......,請嘗試使用[此工具包](http://gladewin32.sourceforge.net/)參考開羅站點: –

+0

這是Haskell綁定的版本號,而不是開羅本身。 – duplode

+0

@Tim似乎已安裝的'cairo'軟件包被破壞了。嘗試取消註冊('ghc-pkg unregister cairo')並用cabal重新安裝;這可能會給我們更多的線索,或者幸運的是,甚至可以解決問題。 – duplode

回答

1

Cairo Commit logs,該函數的領先underscorecairo-1.9.2刪除。如果調用者在Haskel方面(這看起來不是根據我們的評論)或者如果在gtk包內引發異常,則考慮使用它之前的版本。

+1

這不可能是問題所在。我目前使用開羅Haskell綁定(和圖表庫)沒有問題與開羅1.12.16。此外,開羅的活動仍在積極維持(最新版本(http://hackage.haskell.org/package/cairo-0.12.5.3)於2014/03/01發佈)。這個明顯的東西從2009年開始就不會被解決。 – duplode

+0

cairo 1.12.16,該函數沒有引導下劃線,所以,有一個調用沒有在某處更新,但我對Haskell沒有任何瞭解。 'libHScairo-0.12.5.3.a'似乎是來電者... –

+0

如果是這樣,那麼所有使用綁定的人都會受到這個問題的影響,但事實並非如此。一般而言,符號與它們所起源的函數的名稱完全不匹配。 – duplode