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

时间:2012-03-06 14:20:04

标签: java jna native-code native-methods

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

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

提前感谢您的任何想法。 彼得

1 个答案:

答案 0 :(得分:0)

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