Registrar DLL no windows 7 (seven) para uso de JNA

Pessoal, estou estudando JNA, usando netbeans e windows 7 64 bits, instalei o cygwin (compilador gcc) e o pluginde C/C++ do NBeans.

Bom, no linux consegui rodar beleza, no windows criei um projeto igualzinho do linux, só pra dar um printf(“Ola”); no codigo em C.

No java criei a interface e a classe, como manda a regra, tudo bem simples.

Acontece que para queo java carregue a dll, ela precisa estar registrar, só q eu ja tentei de tudo que é jeito registrar a dll no raio do windows 7 e nao da certo, so recebo mensagem de erro! o projeto que criei no netbeans foi de biblioteca dinamica em C/C++.

Ja tentei executando o cmd.exe como administrador e dando o comando regsvr32 C:\Projetos\Teste\dist\libTeste.dll, tentei copiando para a psta system32 e nada, estou ficanto p da vida com isso já, se alguem puder me ajudar agradeço muito!

Obrigado!

Você está usando um sistema de 64 bits, e sua dll é compilada para 32 ou 64? Se for 64, system32 e regsvr32 não serão úteis.

nas opções de compilaçãodo nebeans para o projeto C(bibli. dinamica) ele tem as seguintes opções: padrão (64 bits da maquina), 32 bits e 64 bits. eu marquei a opção 32 bits e compilei. porem msm assim nao consigo efetuar a carga da biblioteca em memória.

alguma sugestão?

Quando tento executar cmd.exe como administrador e dar o comando regsrv32, a mensagem que recebo e esta:

“A Dll foi carregada mas o ponto de entrada DllRegisterServer não foi localizado”. “Certifiquese que dll… é um arquivo Dll ou OCX válido” e tente novamente."

[quote=pirado18]Quando tento executar cmd.exe como administrador e dar o comando regsrv32, a mensagem que recebo e esta:

“A Dll foi carregada mas o ponto de entrada DllRegisterServer não foi localizado”. “Certifiquese que dll… é um arquivo Dll ou OCX válido” e tente novamente."[/quote]

Isso quer dizer que a sua biblioteca tem dependências. Ela é Ansi c? ou c++ iso? Se estiver usando algum framework, tem que disponibilizar os assemblies junto com ela.
E, porque não compila para 64 bits, se o seu sistema é 64? Só vai precisar colocar a dll no path do aplicativo que vai usá-la.

Como falei, estou usando o netbeans 6.8 com o plugin C/C++.

Estou usando ansi c.

Quando eu compilo, só cria o arquivo .dll pra mim, mais nada. Como gerar os assembles?

O padrão do sistema é 64 bits, o netbeans compila por padrão em 64 bits msm, mas ja tentei com 32 e 64 bits enão deu certo.

Mais alguma informação para ajudar?

Ainda não consegui registrar a dll no windows 7, compilando tanto como 32, quanto 64 bits.

Joguei os arquivos (jar da aplicação teste, libs jna e dll que criei) em um pendrive, pluguei numa máquina com windows xp sp2, foi só executar o arquivo jar da aplicação e a aplicação carregou a dll normalmente! Sem nem precisar registrar!

Porém, eu optei por fazer o teste e tentar registrar a dll que criei e TAMBEM uma dll do proprio sistema win xp!

O resultado foi o mesmo erro tanto para minha dll quanto para a dll do sistema operacional, ou seja, porque raios essa bacaça funciona no windows xp, mesmo dando erro ao tentar registrar a dll e no windows 7 não funciona?

Alguem consegue me ajudar? Tá foda, quero estudar, aprender e ficar preso por causa da me*** do ruindows eh uma desgraça!

[quote=pirado18]Ainda não consegui registrar a dll no windows 7, compilando tanto como 32, quanto 64 bits.

Joguei os arquivos (jar da aplicação teste, libs jna e dll que criei) em um pendrive, pluguei numa máquina com windows xp sp2, foi só executar o arquivo jar da aplicação e a aplicação carregou a dll normalmente! Sem nem precisar registrar!

Porém, eu optei por fazer o teste e tentar registrar a dll que criei e TAMBEM uma dll do proprio sistema win xp!

O resultado foi o mesmo erro tanto para minha dll quanto para a dll do sistema operacional, ou seja, porque raios essa bacaça funciona no windows xp, mesmo dando erro ao tentar registrar a dll e no windows 7 não funciona?

Alguem consegue me ajudar? Tá foda, quero estudar, aprender e ficar preso por causa da me*** do ruindows eh uma desgraça![/quote]

Huhuahua. Calma, O seu problema é dependência de arquivos. Sua dll deve depender de arquivos que estão no winxp e não estão no seven.
Utilize o aplicativo Dependency Walker para localizar as bibliotecas que faltam.

http://www.dependencywalker.com/

Cara, muito obrigado, mas verifiquei as dependencias e mesmo assim nao resolveu, desisto!

Vou ficar quebrando a cabeça pra estudar no windows mais nao. Prefiro linux, o conceito é o mesmo. Obrigado!

Pessoal estou com um problema similar a este paresentado na thread, só quem em vez de tentar registrar a dll estou usando a técnica :


System.setProperty("jna.library.path", LIB_HOME); // Onde lib home é um caminho válido no S.O.

No linux isso roda de boa mas no windows mesmo com o path correto ele não consegue encontrar o módulo. Alguém aqui usa JNA com Windows e pode me dar um help?

[quote=juliocbq][quote=pirado18]Ainda não consegui registrar a dll no windows 7, compilando tanto como 32, quanto 64 bits.

Joguei os arquivos (jar da aplicação teste, libs jna e dll que criei) em um pendrive, pluguei numa máquina com windows xp sp2, foi só executar o arquivo jar da aplicação e a aplicação carregou a dll normalmente! Sem nem precisar registrar!

Porém, eu optei por fazer o teste e tentar registrar a dll que criei e TAMBEM uma dll do proprio sistema win xp!

O resultado foi o mesmo erro tanto para minha dll quanto para a dll do sistema operacional, ou seja, porque raios essa bacaça funciona no windows xp, mesmo dando erro ao tentar registrar a dll e no windows 7 não funciona?

Alguem consegue me ajudar? Tá foda, quero estudar, aprender e ficar preso por causa da me*** do ruindows eh uma desgraça![/quote]

Huhuahua. Calma, O seu problema é dependência de arquivos. Sua dll deve depender de arquivos que estão no winxp e não estão no seven.
Utilize o aplicativo Dependency Walker para localizar as bibliotecas que faltam.

http://www.dependencywalker.com/[/quote]

Boa noite,

Estou com o mesmo problema.
É o seguinte: Estou com uma DLL compilada para x86, e não encontro maneiras de registrar ela no Windows 7 64 bits.
Utilizei o Dependency Walker, segue o log.