Caros colegas do mundo Java!
Tenho um programa implementado para acessar uma DLL (feita em .Net com C#), onde, basicamente, passo uma String para validação.
A DLL é feita por terceiros e o projeto principal já usa JNA para interfacear essa troca de informações com as DLLs.
Ao executar o programa, tenho a seguinte exceção:
Exception in thread "main" java.lang.UnsatisfiedLinkError: Error looking up function 'ValidaString': Não foi possível encontrar o procedimento especificado.
at com.sun.jna.Function.<init>(Function.java:126)
at com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:219)
at com.sun.jna.Library$Handler.invoke(Library.java:191)
at $Proxy0.ValidaString(Unknown Source)
at <pacote>.StringValidator.main(StringValidator.java:93)
A interface que mapeia os métodos da DLL, está assim:
package <pacote>;
import com.sun.jna.Native;
/**
* Essa interface utiliza uma DLL para validação da String.
*
* @author junio.fernandes
* @version $Revision: 1.1.2.1 $
*/
public interface IfcStringValidator extends com.sun.jna.win32.StdCallLibrary
{
public static final IfcStringValidator INSTANCE = (IfcStringValidator ) Native.loadLibrary(
"StringValidator", IfcStringValidator .class);
public boolean ValidaString(String texto);
public enum TipoDoc
{
TEXTO, A4;
}
}
A classe que implementa toda a validação necessária, possui o seguinte método que acessa a DLL por meio da interface descrita acima:
public boolean isValid()
{
boolean valido = false;
try
{
IfcStringValidator stringValidator = IfcStringValidator.INSTANCE;
if (this.texto != null)
{
valido = stringValidator.ValidaString(this.texto);
}
}
catch (Exception e)
{
logger.error(e.getMessage(), e);
}
return (valido);
}
Já vi por aí que há problema no acesso a DLLs com JNA, quando essa DLL é feita com .Net, mas nada conclusivo.
Aprecio e agradeço as colaborações e sugestões dos colegas!