Forum: PC-Programmierung DLL - Zugriff immer gleich?


von Sam (Gast)


Lesenswert?

Hallo,

ich habe hier eine DLL, die unter .net 4.0 erstellt wurde und auch 
fehlerfrei funktioniert. Unter .net 3.5 gibt es allerdings Probleme: die 
DLL kann nicht geladen werden (sagt Visual Studio) und der PC versucht 
automatisch .net 4.0 zu installieren.

Ich dachte eine DLL hat eine definierte Schnittstelle und muß lediglich 
über diese immer gleich angesprochen werden? - Da hab ich mich wohl 
getäuscht, oder?

Gruß Sam

von Marius W. (mw1987)


Lesenswert?

Klar hat eine DLL immer eine definierte Schnittstelle. Aber eine DLL hat 
in sich natürlich auch die Implementierung dieser Schnittstelle. Und 
wenn die Implementierung .net 4.0 benötigt, dann wird halt .net 4.0 auch 
installiert. Ist doch klar, oder?

MfG
Marius

von Sam (Gast)


Lesenswert?

Das ist soweit klar. Aber die DLL greift nur auf Funktionen zu, die es 
schon vor 100 Jahren gab (wie z.B. CreateFile() usw.). Deshalb bin ich 
etwas überrascht.
Ich dacht, dass die DLL alles, was sie zur Implementierung braucht, in 
sich selber kapselt. Hm, das war aber die LIB, wenn ich so darüber 
nachdenke. Die DLL lädt die benötigten DLL's nach ...

von Peter II (Gast)


Lesenswert?

es reicht schon in in den Infos der dll steht das sie für .net4.0 ist.

Wozu braucht meine eine C# DLL die CreateFile macht? Wenn man das 
unbedingt braucht dann kann man doch gleich eine C-Dll erzeugen.

Was spricht dageben die dll einfach für .net3.0 zu erzeugen, die geht 
dann auch unter 4.0?

von Sam (Gast)


Lesenswert?

Erstmal Danke für die Antworten.

Es spricht nichts dagegen, die DLL einfach für .net 3.0 zu erzeugen ... 
vorausgesetzt es geht auch einfach. Kann ich das aus .net 4.0 heraus 
machen? Z.B. durch irgendein Flag, das man setzen kann? Oder muss ich 
von .net 4.0 auf .net 3.0 downgraden?

von Peter II (Gast)


Lesenswert?

Sam schrieb:
> Kann ich das aus .net 4.0 heraus
> machen?

kommt auf deine entwicklungsumgebung an. Normalerweise kann man das in 
den Projekteinstellungen machen

von Sven H. (dsb_sven)


Lesenswert?

Wenn du eine Klassenbibliothek im .Net 4.0 erstellt hast, muss auf dem 
Zielsystem eben dieses Framework installiert sein.

Du kannst deine Klassenbibliothek problemlos für eine andere 
Frameworkversion erstellen. Voraussetzung ist, dass du keine "neuen" 
Features aus der Version 4.0 verwendet hast.

Die entsprechende Einstellungsmöglichkeit findest du bei den 
Projekteigenschaften (im Projekt explorer nen Doppelklick auf 
"Properties", dann sollte das schon im ersten Tab erscheinen).

von Jasch (Gast)


Lesenswert?

Sam schrieb:
> Hallo,
>
> ich habe hier eine DLL, die unter .net 4.0 erstellt wurde und auch
> fehlerfrei funktioniert. Unter .net 3.5 gibt es allerdings Probleme: die
> DLL kann nicht geladen werden (sagt Visual Studio) und der PC versucht
> automatisch .net 4.0 zu installieren.
>
> Ich dachte eine DLL hat eine definierte Schnittstelle und muß lediglich
> über diese immer gleich angesprochen werden? - Da hab ich mich wohl
> getäuscht, oder?

Ja und nein.

Eine DLL ist eine DLL ist eine DLL, ausser wenn sie nur so heisst.

Was Du mit .NET erstellst ist keine traditionelle DLL sondern eine 
sogenannte Assembly, enthält keinen Maschinencode sondern .NET-Bytecode, 
kann digital signiert sein, enthält spezifische Metadaten, usw., blah, 
fasel.

Die .NET-Doku verrät Dir all das und noch mehr. Auch dass Assemblies 
meistens aufwärtskompatibel sind aber selten andersrum, ist ja irgendwie 
auch logisch.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.