2011-10-05 11 views
6

Estoy importando varias DLL de C++ no administradas a mi proyecto, sin embargo, las DLL importadas tienen el mismo nombre de método que causa problemas con el compilador. Por ejemplo;Llamar a múltiples importaciones dll con el mismo nombre de método

unsafe class Myclass 
{ 
    [DllImport("myfirstdll.dll")] 
    public static extern bool ReturnValidate(long* bignum); 

    [DllImport("myseconddll.dll")] 
    public static extern bool ReturnValidate(long* bignum); 

    public Myclass 
    { 
     int anum = 123; 
     long passednum = &anum; 
     ReturnValidate(passsednum); 
    } 
} 

Ahora lo que me gustaría hacer es cambiar el nombre del método en la importación. Algo como;

[DllImport("myseconddll.dll")] 
public static extern bool ReturnValidate(long bignum) AS bool ReturnValidate2(long bignum); 

¿Esto es posible?

Respuesta

7

Usted puede proporcionar cualquier nombre para su función importada, sólo se debe especificar en DllImport el nombre de la función en usando la propiedad EntryPoint. Entonces su código podría verse así:

[DllImport("myfirstdll.dll", EntryPoint="ReturnValidate")] 
public static extern bool ReturnValidate1(long bignum); 

[DllImport("myseconddll.dll", EntryPoint="ReturnValidate")] 
public static extern bool ReturnValidate2(long bignum); 
12

Utilice la propiedad EntryPoint del atributo DllImport.

[DllImport("myseconddll.dll", EntryPoint = "ReturnValidate")] 
public static extern bool ReturnValidate2(long bignum); 

Ahora cuando se llama ReturnValidate2 en su código C#, se le llamará de manera efectiva en ReturnValidate myseconddll.dll.

2

Utilice la EntryPoint parámetro:

[DllImport("myfirstdll.dll", EntryPoint="ReturnValidate")] 
public static extern bool ReturnValidate1(long bignum); 

[DllImport("myseconddll.dll", EntryPoint="ReturnValidate")] 
public static extern bool ReturnValidate2(long bignum); 

Documentación:
http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.dllimportattribute.aspx
http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.dllimportattribute.entrypoint.aspx

Cuestiones relacionadas