*.dll Funktioniert nicht?

MichiStroi

Erfahrenes Mitglied
Hi,

Ich habe ein Software Interface gekauft dessen Packet eine *.dll eine gleichnamige *.h und eine gleichnamige *.lib beinhaltet.
Eigentlich dachte ich, dass ich auf die *.dll nur verweisen müßte und es würde klappen. Leider ist das nicht so!
Stattdessen bekomme ich folgende Fehlermeldung beim verweisen:
----------
Es konnte kein Verweis auf *.dll hinzugefügt werden. Dies ist keine gültige Assembly oder COM_Komponente. Es kann nur auf Assemblys mit der Erweiterung dll oder auf COM-Komponenten verwiesen werden. Stellen Sie sicher, dass die Datei zugreifbar ist, und dass sie eine gültige Assembly oder COM-Komponente ist.
----------

Kann mir da jemand helfen? Die gelieferte Software sollte funktionieren, andere Entwickler haben es ja schließlich auch geschafft.

Danke
Michi
 
Zuletzt bearbeitet:
Könnte es sein, dass das eine C/++ Bibliothek ist, die den COM-Standard nicht unterstützt?
.NET kann nur COM-Bibliotheken und andere .NET Assemblies als Bibliotheken verwenden. Du müsstest eine COM-Wrapper-DLL schreiben (z.B. in C/++) um diese Bibliothek in .NET verwenden zu können.

Haben andere .NET Programmierer (C/++-Anhänger können das sowieso) das geschaft?
 
Das könnte sein in C / C++ wurde es jedenfalls entwickelt.
Ob andere mit .Net programmiert haben weiß ich nicht.
http://www.ixmate.com hat es verwendet. nach einer .Net Applikation sieht die Oberfläche allerdings nicht aus.

Ist das mit der COM-Wrapper *.dll machbar? Gibts hierzu irgendwelche Links?

Danke!

Michi
 
Kommt darauf an, wieviele Funktionen diese DLL zur Verfügung steht, und wieviele du selbst brauchst, weil dein COM-Wrapper alle Prozeduren dieser Bibliothek zur Verfügung stellen muss.
Ich selber habe weder Ahnung von C/++ noch von COM. Kann dir da leider nicht helfen.
 
Die einzige Möglichkeit, die DLL direkt in .NET zu benutzen, ist über API Aufrufe. Leider habe ich bisher genau einmal eine API-Funktion gebraucht. In der *.h Datei stehen die Funktionsnamen. Diese Namen musst du in deinem Programm deklarieren um sie dann wie normale, statische Methoden zu benutzen.

Kennt sich jemand damit aus?
 
Problem gelöst...
die *.dll Datei wurde in C++ für C++ geschrieben und kann nicht direkt importiert werden.
Lösung 1:
http://msdn.microsoft.com/library/en-us/dncscol/html/csharp09192002.asp

Dieses Beispiel importiert mittels [DllImport] eine Funktion aus der *.dll Datei.
Ist zwar ein bischen umständlich, aber es funktioniert.

Weitere Möglichkeit wäre es eine COM zu schreiben und dann in C# ganz gewöhnlich zu importieren. Aber das klingt mir ein bischen zu komplex. Der Vorteil dieser Variante wäre allerdings, dass ich das ganze dll File anschließen wie gewöhnlich verwenden lässt.

Wenn jemand darüber Infos/Tutorials/Beispiele hätte wär ich sehr erfreut...

Schöne Grüße aus dem tief (mit Kunstschnee) verschneiten Österreich...
Michi ;-)
 

Neue Beiträge

Zurück