Laden...

Startpunkt in der Dll setzen

Erstellt von Dexter vor 18 Jahren Letzter Beitrag vor 18 Jahren 2.343 Views
D
Dexter Themenstarter:in
481 Beiträge seit 2005
vor 18 Jahren
Startpunkt in der Dll setzen

Wie kann ich in ner Dll nen startpunkt setzen, sodass ich ne methode wie folgt aufrufen kann:


private static void TuEtwas(string nichts);

Oder wird das automatisch gemacht?

Dexter

Programmierer sind Maschinen die Koffein in Quellcode umsetzen.

4.221 Beiträge seit 2005
vor 18 Jahren

Eine DLL hat einen EntryPoint

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

4.506 Beiträge seit 2004
vor 18 Jahren

Hallo Programmierhans!

Eine DLL hat einen EntryPoint

Hat er einen? Ich glaub nicht, dass er einen hat, ist das nur ein Schreibfehler?

Ciao
Norman-Timo

A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”

6.862 Beiträge seit 2003
vor 18 Jahren

Wofür braucht man bei ner DLL nen Startpunkt? Ist doch nur nen Stück Code den man benutzen kann...

Baka wa shinanakya naoranai.

Mein XING Profil.

4.221 Beiträge seit 2005
vor 18 Jahren

Original von norman_timo

Eine DLL hat einen EntryPoint

Hat er einen? Ich glaub nicht, dass er einen hat, ist das nur ein Schreibfehler?

Was so ein kleiner mieser fehlender "k" alles ausmachen kann 🙂

Ja ist natürlich ein Schreibfehler... Ein DLL hat KKKKKKKKeinen EntryPoint

Danke für den Hinweis

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

S
147 Beiträge seit 2005
vor 18 Jahren

Wie kann ich in ner Dll nen startpunkt setzen, sodass ich ne methode wie folgt aufrufen kann

Kannst du vielleicht erleutern was du vor hast? Im Moment kann ich mir noch kein Anwendungsfall vorstellen.

salla

402 Beiträge seit 2005
vor 18 Jahren

Er meint sich die guten alten Exports in Win32-DLL's! Das gibts bei .NET nicht mehr!

Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.

4.221 Beiträge seit 2005
vor 18 Jahren

Im übrigen muss die Methode natürlich public statt private sein wenn Du diese von ausserhalb aufrufen willst........

(Kollege Glasauge sieht fast alles)

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

D
Dexter Themenstarter:in
481 Beiträge seit 2005
vor 18 Jahren

Also in der Dll hab ich n paar Methoden, darunter auch welche die in ner ArrayList n eintrag hinzufügen zurückliefern, löschen usw.

Früher hab ich das einfach mit ner Instanz von der Klasse im Dll gemacht, nur leider funzt das nich mehr ganz, entweder wenn ich die Dll per DllImport oder per Refernz importiere, deshalb hab ich mir gedacht ich könnte das mit Entrypoints machen.

Dll sieht wie folgt aus:


public class Groups
{
        public Groups()
        {
        }
        public void AddGroup(string name)
        {
         //Zu ner ArrayList hinzufügen
        }
}

Wenn ich jetzt in nem anderen Prog ne Instanz von der Datei erzeugen will geht das nich 😠

Dexter

Programmierer sind Maschinen die Koffein in Quellcode umsetzen.

D
Dexter Themenstarter:in
481 Beiträge seit 2005
vor 18 Jahren

Mhm beim Kompilieren kommt folgender Fehler:

Attribute "DllImport" is not valid on this declaration type. It is valid on 'method' declarations only.

Was is da der Fehler.

der Fehler kommt in der Zeile:


[DllImport("irgendwas.dll")]

Dexter

Programmierer sind Maschinen die Koffein in Quellcode umsetzen.

402 Beiträge seit 2005
vor 18 Jahren

.NET Assemblys werden nicht importiert. Du musst Dich, glaube ich, erstmal von Win32-DLL's lösen! Das einzige was diese und .NET Assemblys gemeinsam haben, ist die Dateiendung! .NET Assemblys werden im Projekt referenziert und einfach benutzt.


using Yournamespace;

...
    groups = new Groups();
    groups.AddGroup("blabla");
...

Oder Du kennzeichnest die Funktion mit "static", dann so:


using Yournamespace;

...
    Groups.AddGroup("blabla");
...

Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.

4.506 Beiträge seit 2004
vor 18 Jahren

Hallo Dexter!

Oder in anderen Worten ausgedrückt, wenn Du mit VS arbeitest, dann einfach auf Deine Solution im Solution-Explorer rechts klicken - > Add Reference -> Browse -> Deine Dll auswählen und alles bestätigen.

Dann wie Tomaten schon genannt, auf den namespace achten, der ist (bzw. kann) unterschiedlich zu dem namespace in der Du die Dll benutzen möchtest.

Wenn Du das gemacht hast, dann kannst Du eine Klasse ganz einfach instanziieren, als würde der code in einem .cs file liegen.

Ciao
Norman-Timo

A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”