64位Windows系统下JavaBDD搭配CUDD后端运行报错求助
在64位Windows系统中使用CUDD后端运行JavaBDD遇到UnsatisfiedLinkageError问题
我在64位Windows系统中尝试用CUDD(或BuDDy)后端运行JavaBDD时遇到问题:从JavaBDD官方渠道获取的包附带32位.dll文件,无法在64位JVM中使用,因此我从CUDD的Git仓库编译64位库。
CUDD编译步骤(Ubuntu WSL下使用mingw-64)
编译命令如下:
git clone https://github.com/ivmai/cudd.git . aclocal automake mkdir build cd build ../configure --enable-shared --enable-dddmp --enable-obj --host=x86_64-w64-mingw32 --build=x86_64-linux-gnu --prefix=... (local directory) make make install
编译完成后,在--prefix指定的目录中得到libcudd-3-0-0-0.dll,将其重命名为JavaBDD要求的cudd.dll并复制到运行JAR的目录下。
问题现象
之前自带的dll完全无法加载,现在新编译的库能被正常加载(NativeLibraries::findFromPaths(...)返回了预期路径下的NativeLibrary),但在执行CUDDFactory.registerNatives()或相关静态代码时,抛出以下错误:
UnsatisfiedLinkageError { DetailMessage: net/sf/javabdd/CUDDFactory.registerNatives()V }
我未在其他系统上测试过,曾尝试通过ChatGPT解决但未得到有效帮助。若需更多信息可告知。
JUnit测试示例
用于复现问题的Java测试代码:
@Test public void registerNativeTest() { System.loadLibrary("cudd"); registerNatives(); } private static native void registerNatives();
内容的提问来源于stack exchange,提问作者derM
相关产品推荐
相关产品推荐

