comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

[C#] DLLs y Excepciones

  • 2 Respuestas
  • 821 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado PikachuDorado

  • *
  • Underc0der
  • Mensajes: 370
  • Actividad:
    0%
  • Reputación 1
  • Im just a Pikachu
    • Ver Perfil
    • Soporte Ava
« en: Septiembre 23, 2016, 10:28:04 am »
Chicos, no estoy muy familiarizado con el C# todavia, bha con ningun lenguaje de programacion, estudie hace varios años mucho pero estoy muy perdido.

Tengo que usar una dll en un programa y siempre recibo el
"system.dllnotfoundexception" en tiempo de ejecución.
Compila, es un exito pero todavia no se manejar las excepciones.

Se que hay que ponerle un try-catch, pero eso no seria hardcodear? .. O falta algo en el framework que no configure? .
Son 2 dlls que usa, una que portea un string y lo encripta para qe lo lea c# y otro invoca los modulos de la DLL principal.

En visual por ejemplo pude sacar a flote este mismo demo, pero siempre me trabo aca en c#.
Código: You are not allowed to view links. Register or Login
public class Import
{
    [DllImport(@"HARDkey_CSHARP.dll")]
    public static extern int HARDkey_CSHARP(byte[] data);
}
Con eso le paso el dato, tengo agregada la referencia.
Que mas me falta?


No se si esta bien formulado, si se entiende o no. Pero pregunten y les digo lo que entienda.

LOS QUIERO <3
Pikaa~


Desconectado PikachuDorado

  • *
  • Underc0der
  • Mensajes: 370
  • Actividad:
    0%
  • Reputación 1
  • Im just a Pikachu
    • Ver Perfil
    • Soporte Ava
« Respuesta #1 en: Septiembre 23, 2016, 10:51:49 am »
Pikaa~


Desconectado grep

  • *
  • Underc0der
  • Mensajes: 178
  • Actividad:
    0%
  • Reputación 3
    • Ver Perfil
    • Grep's personal site
« Respuesta #2 en: Septiembre 23, 2016, 11:34:59 am »
Veo dos cosas que me llaman la atención:

(1)
¿Estás seguro de que la DLL que quieres utilizar es una "Unmanaged DLL"?. [DllImport()] es para consumir funciones exportadas que no utilizan el framework .NET, y por el nombre HARDkey_CSHARP.dll sospecho que esa librería es del tipo "Managed DLL".

Si ese es el caso, entonces para agregar referencias en tiempo de ejecución debes utilizar "Reflection":

Código: C#
  1. Assembly SampleAssembly = Assembly.LoadFrom(filename);
  2. Type myType = SampleAssembly.GetTypes()[0];
  3. MethodInfo Method = myType.GetMethod("myVoid");
  4. object myInstance = Activator.CreateInstance(myType);
  5. Method.Invoke(myInstance, null);

Fuente:
You are not allowed to view links. Register or Login

Para referenciar a la librería en tiempo de compilación, puedes utilizar el Reference Manager de Visual Studio para agregar referencias:
How to: Add or Remove References By Using the Reference Manager
You are not allowed to view links. Register or Login

O el parametro /r (o /reference) en el compilador:
/reference (C# Compiler Options)
You are not allowed to view links. Register or Login
Command-line Building With csc.exe
You are not allowed to view links. Register or Login
Working with the C# 2.0 Command Line Compiler
You are not allowed to view links. Register or Login

y no olvides de copiar el .dll del assembly en el mismo directorio donde tienes el ejecutable que lo utiliza. Visual Studio hace esto por defecto.

(2)
Basándome en el System.DllNotFoundException, quizás debas especificar la ruta del .dll con AddDllDirectory o SetDllDirectory, o agregar la ruta al PATH:

Dynamic-Link Library (DLL) Search Order
You are not allowed to view links. Register or Login
Specify the search path for DllImport in .NET
You are not allowed to view links. Register or Login

Saludos

 

¿Te gustó el post? COMPARTILO!