Erro dependência eidpt.dll

Apr 18, 2013 at 3:30 PM
Criei uma aplicação em C# para a leitura do cartão de cidadão, que funciona bem no windows 8 e 7, mas não funciona no XP.

Aparece o seguinte erro:
"Could not load file or assembly 'eidpt.dll' or one of its dependencies. Impossível localizar o módulo especificado."

Este erro costuma aparecer quando a middleware oficial do cc não está instalada, tanto no windows 7 e 8, mas no XP aparece sempre este erro.

Compilei a eidpt.dll para framework 4 no Visual Studio 2012.
Também já instalei o Microsoft Visual C++ 2012 Redistributable Package (x86) no XP, mas sem sucesso.

Alguém me pode ajudar?
Apr 18, 2013 at 4:50 PM
Isso aconteceu-me e na altura foi porque me faltava a versão 2010. Mas também era porque estava compilando com o framework 3.5.

Se tiveres o middleware oficial, o redistributable package 2012 e a .net framework 4.0 no cliente já instalado, não tou a ver o que falta.

Tenta ver como disse num post a algum tempo
Embora ele deia falta de essa dll, a verdade é que é uma dll interna que está em falta no sistema do 2010, que tinha no meu PC de desenvolvimento, mas não no PC cliente.

Experimenta usar um destes programas para ele te apontar à DLL em falta mesmo dotPeek, JustDecompile, CodeReflect ou o ILSpy e depois procura pela DLL que te disser.

E isto tem a ver com o PC aonde está se correndo o programa não aonde foi o desenvolvimento.
Apr 18, 2013 at 5:25 PM
A questão é que tenho isso feito.

Tenho instalado:
-middleware oficial
-redistributable package 2012
-.net framework 4.0

Estou a tentar usar o dotpeek, mas não percebo como posso usar no PC cliente. Tenho de apontar para a pasta do executável da aplicação? Ou tenho de ver as referencias do eidpt.dll no dotpeek e ver ser se falta alguma .dll no sistema?
Apr 18, 2013 at 5:26 PM
Já agora, recordas-te que .dll faltava a ti e aonde?
Apr 19, 2013 at 8:42 AM
No meu caso, o cliente não tinha o redistributable package correcto instalado...

Se bem me lembro, na altura usei o dotPeek no PC cliente apontei ao executável que tinha produzido e verifiquei step by step até arrebentar. Ao dar-me a dll em falta pesquisei na net onde essa dll era contida dei um facepalm bruto na cara por ter ficado até às tantas da manha só por causa disso :) e instalei e ficou tudo a funcionar.

Continua a fazer update.
Apr 19, 2013 at 11:07 AM
Verifica se o cliente tem o "visual c++ redistributable" instalado.
Apr 19, 2013 at 12:56 PM
A questão é que tenho isso feito.

Tenho instalado:
-middleware oficial
-redistributable package 2012
-.net framework 4.0
Segundo o que ele diz, sim... Mas se for nada de software que falte. O meu conselho é baixar o nível de framework para 3.5 ou 3.0.
Apr 19, 2013 at 2:03 PM
Edited Apr 19, 2013 at 2:09 PM
Obrigado, pelas vossas sugestões. Já resolvi o problema.

O que tive de fazer foi actualizar o VS2012 para o update 2 SP1, para poder complicar a eidpt.dll para o visual c++ redistributable 2012 (pois a Microsoft está a descontinuar o XP).
Alterei a seguinte plataforma (http://prntscr.com/118nlc) nas propriedades da dll (que dantes não aparecia).
Assim funciona no XP e é transversal para os OS posteriores.
Mas não invalida o facto de ter o visual c++ redistributable 2012, esse tem de estar sempre instalado.
Apr 19, 2013 at 2:08 PM
Outra coisa, também tive de compilar em modo Release, pois dantes estava em modo Debug.
Em modo Release tive de retirar a signature eidpt.snk, também nas propriedades da eidpt.dll.
Jul 8, 2013 at 5:15 PM
Bom día e disculpas polo Meu Portugues.

Estamos a desenrolar unha app que ten que volcar toda a info disponivel do cartao a un ficheiro de texto, a foto da persoa nom e imprescindibel,

O caso e que o aplicativo de exemplo que ven nest web con moi poucos cambios xa nos serviría, pero non conseguimos compilarlo ni executarlo... tras moitas probas conseguimos compilar un consoleUI.exe pero este xenera o seginte error ao tentar de executalo:

Excepción no controlada: System.BadImageFormatException: No se puede cargar el a
rchivo o ensamblado 'eidpt, Version=1.21.2.0, Culture=neutral, PublicKeyToken=nu
ll' ni una de sus dependencias. Se ha intentado cargar un programa con un format
o incorrecto.
Nombre de archivo: 'eidpt, Version=1.21.2.0, Culture=neutral, PublicKeyToken=nul
l'
en ConsoleUI.Program.Main(String[] args)

AVS: El registro del enlace de ensamblado está desactivado.
Para habilitar el registro de errores del enlace de ensamblado, establezca el va
lor de Registro [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) como 1.
Nota: existe una disminución del rendimiento asociada registro de errores del en
lace de ensamblado.
Para desactivar esta característica, elimine el valor de Registro [HKLM\Software
\Microsoft\Fusion!EnableLog].

O certo e que agadeceríamos calqueira ajuda a este respeiro, incluso se alguen poidese pasarnos o ficheiro ja compilado e funcionando...

Cando falan do Middleware refirense a algún destes ficheiros?

Portugal eID Middleware v1_25_0_64bit.exe ?

ou?

PteidMW-Basic-x64.msi?

Usamos windows 8

Muito obrigado.
Jul 9, 2013 at 9:39 AM
Para a DLL eidpt funcionar é necessário o seguinte:

1. O software do cartão de cidadão tem de estar instalado:

Major and Minor versions match the underlying eID Lib version on which the Wrapper is built. The corresponding Middleware needs to be installed on machines that make use of eIDPT, which can be found at: http://www.cartaodecidadao.pt/

http://cartaodecidadao.codeplex.com/releases/view/29087

Cartão de Cidadão Middleware Application installation (v1.21 or 1.22) is required for proper use of the eID Lib.

Atenção! Não esquecer de configurar o projecto da aplicação que usa a DLL eidpt no Visual Studio para 32 bits (propriedades do projecto --> compile --> Target CPU x86) senão não funciona em sistemas operativos de 64 bits.

For use on 64 bit systems, on Project Settings, explicit x86 platform target is necessary do be set.

2. O Microsoft Visual C++ 2010 SP1 Redistributable Package (x86) (vcredist_x86.exe) tem de estar instalado.

Download disponível em http://www.microsoft.com/download/en/details.aspx?id=8328

Se não estiver instalado, ocorrerá a seguinte excepção:

The type initializer for 'Libware.Common.CitizenCard.LBWCitizenCard' threw an exception.
System.IO.FileNotFoundException: Could not load file or assembly 'eidpt, Version=1.21.2.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies.
O sistema não conseguiu localizar o ficheiro especificado. File name: 'eidpt, Version=1.21.2.0, Culture=neutral, PublicKeyToken=null' at Libware.Common.CitizenCard.LBWCitizenCard..cctor()

Espero que esta informação ajude.
Jul 16, 2013 at 10:37 AM
É possível obter uma dll EIDPT gerada para a plataforma x64?
Feb 13, 2014 at 3:23 PM
Acontece que estou no VS2012 e tenho um computador com arquitetura de 64bits, com o Windows 8.1.
Quando falam em instalar o middleware é exatamente o quê? O único que instalei foi o programa leitor oficial do CC que inseriu no System32 as dll (pteidapplayer, pteidcardlayer, pteidcommon e por aí..) São estas as dll que necessitam de estar no System32, certo?

Estou a desenvolver uma aplicação ASP.NET MVC em C# e inseri nas referências a eidpt.dll. Ele dá logo warning que "Could not load file or assembly 'eidpt.dll' or one of its dependencies. Impossível localizar o módulo especificado."

Tenho também o Visual C++ Redistributable.
Tenho o VS2012 com o update 4 e o target do projeto é x86.. Não sei o que fazer mais.. Acho que tenho tudo instalado, mas quando insiro a dll nas referências, dá o tal erro.. O que me está a faltar?

Obrigado pela atenção, mas já tentei de tudo e estou mesmo a ficar desesperado..
Feb 13, 2014 at 9:17 PM
Já fizeste o que é sugerido pelo Facochero?

[...]
Atenção! Não esquecer de configurar o projecto da aplicação que usa a DLL eidpt no Visual Studio para 32 bits (propriedades do projecto --> compile --> Target CPU x86) senão não funciona em sistemas operativos de 64 bits.
[...]
Feb 14, 2014 at 10:00 AM
Sim, até isso já tinha feito mas não resolveu.
O que tive de fazer foi download do middleware do Windows 64 bits.
Em http://www.cartaodecidadao.pt/ tem o Software para Utilização do Cartão para o Windows 64 bits. Só com o middleware correto instalado é que finalmente conseguiu ler corretamente a eidpt.dll.

Obrigado,

Cumprimentos!
Mar 10, 2014 at 12:40 PM
Boa tarde,

Estou a trabalhar num projecto onde neste momento estamos a integrar o cartão do cidadão, e o facto de ter de instalar o middleware está-nos a causar um problema nos nossos clientes que não vão dar utilidade à funcionalidade, isto é, nos clientes onde não vamos ter um SmartCards para leitura dos dados do cartão do cidadão não é muito prático ter que instalar o middleware. Mas não instalando o middleware irá sempre ocorrer uma excepção

Existe alguma maneira de ultrapassar esta situação?

Cumprimentos,
Luís Garcia
Oct 19, 2015 at 3:53 PM
Boa tarde

Como posso/devo incluir as dependências para compilar e publicar um projecto VB em Visual Studio?
Há algum tutorial sobre isso?

Obrigado