私は独自のDLLに依存するHaskellパッケージを書いています。私もstack
ツールを使用します。ライブラリにはx86およびx64バージョンがあります。 this issueによると、.cabal
ファイルを変更することでできません。だから、私はSetup.hs
を更新してやろうとしています。これは私のセットアップスクリプトです:独自のDLLとパッケージをリンクするにはどうすればよいですか?
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
}
は、それから私は呼ん:
> stack test
これはまだテストスイートのリンク時に未定義の参照につながります。どうして?
何かを使用できるようにする
build-type: Custom
を設定しました'働くかもしれない。あなたはコマンドラインからコンパイルする方法を知っているので、ちょうどそれを行うようにカバールに伝えてください。私はこれが最も回避策であり、せいぜい醜いハックだと思います。しかし、ハスケルのツールチェーンについては、WindowsやFFIではうまくいかないことがほとんどありません。 – user2407038@Leonidasあなたは答えとしてあなたのアップデートを投稿し、これを受け入れて未回答の質問キューからこれを削除できますか?ありがとう! – sclv
@ user2407038、これは動作しません。 Cabalはファイルを解析できません... – Leonid