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.