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?
ş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@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
@ user2407038, bu çalışmıyor. Cabal dosya ayrıştırılamıyor ... – Leonid