JNA x DLL no VS 2008

Bom dia a todos.

Alguém de vocês já tentaram acassar, via JNA, funções de DLL feita no Visual Studio 2008? Eu não consigo de jeito nenhum, apenas DLLs feitas no VS 2005. Segue mensagem de erro:

Exception in thread “main” java.lang.UnsatisfiedLinkError: Unable to load library ‘teste’: Falha na inicialização do aplicativo devido a configuração lado a lado incorreta.

Alguém já passou por essa experiência ou tem algum parecer?

Abraço.

Se, por acaso, você compilou sua DLL usando a opção /MD (Multithreaded DLL) em vez de /MT (Multithreaded), você terá de copiar os arquivos que estão no diretório c:\Arquivos de Programas\Microsoft Visual Studio 9.0\vc\redist\x86\Microsoft.VC90.CRT - pelo menos o Microsoft.VC90.CRT.manifest e msvcr90.dll (talvez você precise dos outros 2).

Ou então você pode alterar as opções de compilação para remover a dependência dessas DLLs.

Thingol,

As DLLS que vc indicou foram compiladas no modo MD, no modo inverso que vc indicou. Para usar os dois arquivos que vc mencionou eu devo dicioná-los ao projeto Java ou apenas colocá-los num diretório específico? No caso, qual seria este diretório?

Abraço.

Hum, boa pergunta. Eu sei que normalmente eu posso vir a ter problemas com esse modo de compilação, então eu sempre recompilo com /MT em vez de /MD.
Mas se não puder fazer isso, copie esses arquivos (msvc*.dll e *.manifest) para o mesmo diretório em que a DLL que você compilou vai residir, para que o recurso “side by side” (esse tal “lado a lado” que aparece na mensagem) seja usado.
O que é o “side by side”? Isso quer dizer que se você tiver N versões dessa tal DLL no seu sistema (por exemplo, a do VS 2008 e a do VS 2008 SP 1), se você tiver o tal arquivo .dll com o respectivo .manifest no mesmo diretório da .dll que usa os tais arquivos, a versão que foi usada para compilar a .dll é que será usada.