2016-03-20 12 views
2

Ben özel bir DLL bağlı olan bir Haskell paketi yazıyorum. Ayrıca stack aracını kullanıyorum. Kütüphane x86 ve x64 versiyonlarına sahiptir. this issue göre ben .cabal dosyayı değiştirerek bunu yapamaz. Bu yüzden, Setup.hs'u güncelleyerek yapmaya çalışıyorum. Bir paket özel bir DLL ile nasıl bağlanır?

import Distribution.Simple 
import Distribution.PackageDescription 
import Distribution.Simple.LocalBuildInfo 
import System.Directory 

updateExtraLibDirs :: LocalBuildInfo -> IO LocalBuildInfo 
updateExtraLibDirs localBuildInfo = do 
    let packageDescription = localPkgDescr localBuildInfo 
     test = head $ testSuites packageDescription 
     testBuild = testBuildInfo test 
    dir <- getCurrentDirectory 
    print $ length $ testSuites packageDescription 
    return localBuildInfo { 
     localPkgDescr = packageDescription { 
      testSuites = [ test { 
       testBuildInfo = testBuild { 
        extraLibDirs = (dir ++ "\\lib") : extraLibDirs testBuild, 
        extraLibs = ("txmlconnector64.dll") : extraLibs testBuild 
       } 
      } ] 
     } 
    } 


main = defaultMainWithHooks simpleUserHooks { 
      confHook = \a f -> confHook simpleUserHooks a f >>= updateExtraLibDirs 
      } 

Sonra çağırır:

> stack test 

Bu hala test paketi bağlantısı sırasında tanımsız başvurular yol açar Bu benim kurulum komut dosyasıdır. Niye ya?

+0

şey kullanmasına izin vermek için build-type: Custom set Çalışabilir. Komut satırından nasıl derleyeceğinizi biliyorsunuz .. sadece cabal'e tam olarak bunu yapmasını söyle. Sanırım bu en çok bir çözüm ve en iyi çirkin bir hack. o Haskell toolchain gelince işler nadiren kesmek sizin için çalışıyorsa kendimi şanslı saymak istiyorum .. Windows ve FFI ile iyi oynamak. – user2407038

+0

@Leonidas Bir yanıttan olarak güncelleme sonrası ve cevaplanmamış sorular kuyruğundan bu kaldırmak için bu kabul edebilir? Teşekkürler! – sclv

+0

@ user2407038, bu çalışmıyor. Cabal dosya ayrıştırılamıyor ... – Leonid

cevap

1

Sadece iki adım: -L -llib64:

  1. "txmlconnector64"
  2. yılında .cabal dosya ile "txmlconnector64.dll" değiştirin o ghc-seçenekleri `sevdiği Setup.hs
+0

Bunu çözdüğüne sevindim. Kabuk yüklemesi için bir hata raporu veya özellik talebi olarak nitelendirilecek herhangi bir şeye rastladınız mı? Bunu eklemek için yararlı ne olabileceğini açıklayabilir eğer bunu rapor üzerinde küçük takibini yapmak mutlu olurum ... – sclv

+0

@sclv, böyle bir konu zaten var. Bağlantıyı güncellenmiş yayında bulabilirsiniz. – Leonid

İlgili konular