Laden...

[gelöst] Einstiegspunkt in der DLL nicht gefunden

Erstellt von f.ritz vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.841 Views
f.ritz Themenstarter:in
341 Beiträge seit 2004
vor 16 Jahren
[gelöst] Einstiegspunkt in der DLL nicht gefunden

Hallo zusammen,
ich möchte eine C++ DLL in meinem Code einbinden.
Ich habe die DLL mit dependencywalker durchgeschaut und die definition der auzurufunden Funktion lautet:

int execCommand(char *,char *,char *,int,char *,int)

Also deklariere ich die Funktion, bei mir, wie folgt:

[DllImport("C:\\Programme\\nsuite\\nsuitesig\\nsuitesigAPIDLL.dll", EntryPoint = "execCommand")]
public static extern int execCommand(string arg1, string arg2, string importData, int importSize, string exportData, int exportSize);

Beim Aufrug der Funktion bekomme ich aber folgende Fehlermeldung:
Der Einstiegspunkt execCommand wurde nicht in der DLL C:\Programme\nsuite\nsuitesig\nsuitesigAPIDLL.dll gefunden.

Woran liegt denn das? Stimmt vielleicht der zu übergebende Datentyp nicht?

S
8.746 Beiträge seit 2005
vor 16 Jahren

Vielleicht sind die Namen dekoriert und du hattest im Dependency Walker die entsprechende Funktion zum Undekorieren aktiviert. Alternativ kannst du ja mit der Ordinalzahl anstelle des Namens arbeiten.

Die Signatur kann total falsch sein; das kann bei Laden Auffinden des Funktionszeigers nicht festgestellt werden (das geht einfach nur über Name oder Zahl). Ob die Signatur stimmt, kann man erst wissen, wenn man die Funktion erfolgreich aufrufen kann.

f.ritz Themenstarter:in
341 Beiträge seit 2004
vor 16 Jahren

Super! Vielen Dank für den Tip!

Mit Ordinalzahl geht es jetzt:

[DllImport("C:\\Programme\\nsuite\\nsuitesig\\nsuitesigAPIDLL.dll", EntryPoint = "#1")]
public static extern int execCommand(String arg1, String arg2, String importData, int importSize, String exportData, int exportSize);