Laden...

Misteriöses Verhalten bei C-Dll + BuildAction

Erstellt von CaptainIglo vor 15 Jahren Letzter Beitrag vor 15 Jahren 745 Views
C
CaptainIglo Themenstarter:in
366 Beiträge seit 2005
vor 15 Jahren
Misteriöses Verhalten bei C-Dll + BuildAction

Hallo,

ich habe hier ein paa C-Dll (Novell NDK um genau zu sein), welche ich per DllImport in meinem C#-Programm referenziere.
Jetzt habe ich folgendes SEHR misteriöses verhalten:

Funktionsaufrufe auf dll-1 funktionieren nur mit BuildAction Component, funktionsaufrufe auf dll-2 aber mit Component und None. CopyToOututDir ist immer auf "If newer".
Was jetzt aber noch komischer ist:
Bei der BuildAction Component werden die dll's NICHT ins Outputverzeichnis kopiert, die .exe wird nicht größer, aber alles funktioniert (auch wenn ich die exe in eine VM ziehe, wo die dll sicher nicht von irgendwo anders referenziert wird).

Kann mir das jemand erklären?

mfg
Capt.Iglo

Hier der verwendete Code:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void buttonGetNovellUserName_Click(object sender, EventArgs e)
    {
        IcNovell.NWCallsInit(0, 0);
        int context = 0;
        IcNovell.NWDSCreateContextHandle(ref context);
        StringBuilder username = new StringBuilder(256);
        IcNovell.NWDSWhoAmI(context, username);
        labelUserName.Text = username.ToString();
        IcNovell.NWDSFreeContext(context);
    }
}

public class IcNovell
{
    [DllImport("calwin32.dll")]
    public static extern int NWCallsInit(byte reserved1, byte reserved2);
    [DllImport("netwin32.dll", EntryPoint = "NWDSCreateContextHandle")]
    public static extern int NWDSCreateContextHandle(ref int context);
    [DllImport("netwin32.dll", EntryPoint = "NWDSWhoAmI")]
    public static extern int NWDSWhoAmI(int context, StringBuilder NovellUserId);
    [DllImport("netwin32.dll", EntryPoint = "NWDSFreeContext")]
    public static extern int NWDSFreeContext(int context);
}

und die Fehlermeldung bei BuildAction None (dll liegt im OutputVerzeichnis):