Z3APIv4.0を使用した.NETプロジェクトがあります。プロジェクトをMonoでコンパイルして実行できるようにしたいと思います。
プロジェクトはMonoDevelopで正常にコンパイルされました。ただし、プログラムを実行またはデバッグすると、次の例外が発生しました
System.DllNotFoundException: z3.dll
at (wrapper managed-to-native) Microsoft.Z3.Native/LIB:Z3_mk_context_rc (intptr)
at Microsoft.Z3.Native.Z3_mk_context_rc (IntPtr a0) [0x00000] in <filename unknown>:0
at Microsoft.Z3.Context..ctor () [0x00000] in <filename unknown>:0
at <StartupCode$Nqueens>.$Nqueens..cctor () [0x00000] in /path/to/file:15
重要な場合は、MacOSXとMono3.0.2/MonoDevelop3.0.5を使用しました。
MonoでZ3APIを使用した経験のある人はいますか?
奇妙な考えのように聞こえますが、私たちの状況は次のように説明されています。Z3を使用するコースがあり、すべてのラボコンピューターにWindowsと.NETFrameworkがインストールされています。ただし、自分のコンピューター(Linux、Mac)で作業している一部の学生は、プロジェクトをコンパイルして実行できるはずです。
概要:
@Leoの提案のおかげで、いくつかの変更を加えて、MonoDevelopでプロジェクトを実行できます。
1)App.config
ファイルを作成し、configuration
タグの下に次の情報を追加します。
<dllmap dll="z3.dll" target="libz3.dylib" os="osx" cpu="x86"/>
2)libz3.dylib
Mac OS Xディストリビューションからコピー(または新しいバージョンの場合はソースからビルド)し、プロジェクトのコンパイル時に共有ライブラリMicrosoft.Z3.dll
が出力フォルダー(モード)にコピーされていることを確認bin/Debug
します。Debug
この目的のためItemGroup
に、プロジェクトファイルのタグに手動で追加します。
<None Include="libz3.dylib">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
<Visible>False</Visible>
</None>
libz3.so
このプロセスは、Linuxでも同様である必要があります。
さまざまな理論でさまざまな例を試しました。これまでのところ、エラーや例外は発生していません。