[C#] DLLs y Excepciones

Iniciado por PikachuDorado, Septiembre 23, 2016, 10:28:04 AM

Tema anterior - Siguiente tema

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

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: text
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~



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: csharp
Assembly SampleAssembly = Assembly.LoadFrom(filename);
Type myType = SampleAssembly.GetTypes()[0];
MethodInfo Method = myType.GetMethod("myVoid");
object myInstance = Activator.CreateInstance(myType);
Method.Invoke(myInstance, null);


Fuente:
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

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
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

O el parametro /r (o /reference) en el compilador:
/reference (C# Compiler Options)
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
Command-line Building With csc.exe
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
Working with the C# 2.0 Command Line Compiler
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

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
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
Specify the search path for DllImport in .NET
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

Saludos