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
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.
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.
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...
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
Zu den escape-Sequenzen:
wegen der escapesequenz kannst du mal ein @ vor deinen string setzen @"c:...."
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...