通过JNA与DLL通信时设置"当前工作目录"



我们使用com.sun.jna包从外部库(DLL)调用方法。此库使用一些支持/缓存数据(DAT文件),并将其写入"当前工作目录"中。不幸的是,当我们将文件扩展名与应用程序相关联(在Windows中双击打开文件)时,会将当前工作目录设置为正在打开的文件的目录,因此DLL会在打开的文件旁边写入缓存数据。这样,如果我们从HDD上的不同位置打开许多文件,我们就会在整个系统中都有DLL的缓存。我们还想控制保存任何缓存/临时/支持数据的位置,我们确实控制了这一点,但有问题的DLL的缓存除外。

有什么方法可以让我为这个DLL设置"当前工作目录",同时通过com.sun.jna中的类与它通信?我可以以某种方式覆盖此设置并将其传递给JNA吗?

提前感谢您的任何想法。Piotr

您可以在jvm中使用System.setProperty("user.dir","yourpath");对其进行更改,但我不知道在jna调用后dll是否会继承该更改。

最新更新