Laden...

DLLImport, DLLnotfound Error

Erstellt von kuppi vor 14 Jahren Letzter Beitrag vor 14 Jahren 2.085 Views
K
kuppi Themenstarter:in
44 Beiträge seit 2006
vor 14 Jahren
DLLImport, DLLnotfound Error

Hallo C# Profis,

leider habe ich ein Problem eine DLL einzubinden.

hier mal kurz ausschnittsweise der Code:

using System.Runtime.InteropServices;

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

        [DllImport("C:/Dokumente und Einstellungen/ockua/Dateien Lokal/Visual Studio 2008/Projects/Dosinotest/Dosinotest/bin/Release/MetrohmOEMInterface.dll")]

        public static extern bool InitMetrohmOEMInterface();

        [DllImport("C:/Dokumente und Einstellungen/ockua/Dateien Lokal/Visual Studio 2008/Projects/Dosinotest/Dosinotest/bin/Release/MetrohmOEMInterface.dll")]

        public static extern long GetNumberOfDevices();

        private void button1_Click(object sender, EventArgs e)
        {
            label1.Text = GetNumberOfDevices().ToString();
        } 

bei button1_Click werde ich mit folgender Meldung erfreut:

Die DLL "C:/Dokumente und Einstellungen/ockua/Dateien Lokal/Visual Studio 2008/Projects/Dosinotest/Dosinotest/bin/Release/MetrohmOEMInterface.dll": Das angegebene Modul wurde nicht gefunden. (Ausnahme von HRESULT: 0x8007007E) kann nicht geladen werden.

Die DLL ist definitiv im bin Verzeichnis, ebenso auch in System32.

Es wäre toll wenn einer von euch was hilfreiches wüsste.

Gruß kuppi

4.942 Beiträge seit 2008
vor 14 Jahren

Wenn die Datei sowieso im System32-Verzeichnis ist, dann probiere einfach mal:


[DllImport("MetrohmOEMInterface.dll")]

Es könnte aber auch sein, daß diese DLL noch andere DLLs benötigt (dies könntest du mit dem Programm "Dependency Walker" (www.dependencywalker.com) überprüfen.

Gelöschter Account
vor 14 Jahren

wow. ich wusste garnicht das man auch ein normales slash in windows-pfaden als ersatz für das backslash verwenden kann......

edit: kann man auch nciht... ->

If the function cannot find the module, the function fails. When specifying a path, be sure to use backslashes (), not forward slashes (/). For more information about paths, see Naming a File or Directory.

3.971 Beiträge seit 2006
vor 14 Jahren

ich wusste garnicht das man auch ein normales slash in windows-pfaden als ersatz für das backslash verwenden kann

Doch kann Windows und das schon recht lange.
Why is the DOS path character ""?
Die Geschichte vom Backslash

Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...

K
kuppi Themenstarter:in
44 Beiträge seit 2006
vor 14 Jahren

Vielen Dank euch allen,

die Lösung hat mir "Dependency Walker" gebracht, da fehlte noch eine andere DLL.
Das mit dem Backslash fürt zu "Nicht erkannte Escapesequenz" Fehler.
Mal sehen was der nächste Stolperstein bringt.

Gruß kuppi

D
68 Beiträge seit 2009
vor 14 Jahren

Zu den escape-Sequenzen:

Was bedeutet das @ vor strings

V
352 Beiträge seit 2008
vor 14 Jahren

wegen der escapesequenz kannst du mal ein @ vor deinen string setzen @"c:...."

3.971 Beiträge seit 2006
vor 14 Jahren

Man beachte auch, das ohne Angabe eines Pfades im System32-Verzeichnis gesucht und auch im aktuellen Anwendungsverzeichnis. Durch Angabe eines Pfades kommt man mehr früher als später in Schwulitäten

Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...