Saltar al contenido

No se pudo agregar una referencia a la dll

este problema se puede tratar de variadas maneras, pero te compartimos la solución más completa en nuestra opinión.

Solución:

Lo siguiente funcionó para mí:

Respuesta corta

Ejecute lo siguiente a través de la línea de comando (cmd):

TlbImp.exe cvextern.dll        //where cvextern.dll is your dll you want to fix.

Y se creará un dll válido para usted.

Respuesta más larga

  • Abrir comando

  • Busque TlbImp.exe. Probablemente se encuentre en C:Program Files (x86)Microsoft SDKsWindowsv7.0ABin. Si no puede encontrarlo, vaya a su carpeta raíz (C: o D:) y ejecute:

    dir tlbimp.exe /s              //this will locate the file.
    
  • Ejecute tlbimp.exe y ponga su dll detrás. Ejemplo: Si su dll es cvextern.dll. Tu puedes correr:

    TlbImp.exe cvextern.dll
    
  • Se ha creado una nueva dll en la misma carpeta de tlbimp.exe. Puede usar eso como referencia en su proyecto.

Puede agregar una DLL (o EXE) a un proyecto solo si es un ensamblado .NET. Si no es así, verá este mensaje de error.

regsvr32 también hace ciertas suposiciones sobre la estructura y la función exportada en la DLL. Ha pasado un tiempo desde que lo usé, pero tiene que ver con el registro de servidores COM, por lo que ciertos puntos de entrada deben estar disponibles. Si regsvr32 falla, la DLL no proporciona esos puntos de entrada y la DLL no contiene un componente COM.

La única posibilidad de usar la DLL es importarla como cualquier otro binario que no sea .NET, por ejemplo, cuando usa ciertas API de Win32. Hay un artículo antiguo de la revista MSDN que podría ser útil. Consulte la siguiente actualización para obtener información sobre dónde obtener el artículo.

Actualización 12 de marzo de 2018: El enlace a la revista MSDN ya no funciona como solía hacerlo en agosto de 2010. El artículo de Jason Clark se titula “Columna .NET: llamar a archivos DLL de Win32 en C# con P/Invoke”. Fue publicado en la edición de julio de 2010 de MSDN Magazine. La “Wayback Machine” tiene el artículo aquí en este momento (el formato es limitado). La edición completa de MSDN Magazine de julio de 2010 está disponible aquí (solo formato HCM, instrucciones sobre cómo usar archivos HCM aquí).

Utilicé Dependency Walker para verificar las referencias internas que tenía el dll. Resulta que necesitaba el tiempo de ejecución de VB msvbvm60.dll y como mi caja de desarrollo no lo tiene instalado, no pude registrarlo usando regsvr32

Esa parece ser la respuesta a mi pregunta original por ahora.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *