Forum: PC-Programmierung .dll einbinden C++


von Praxsem (Gast)


Lesenswert?

Hallo,

ich habe ein Problem:

Ich möchte eine .dll in mein Visual Studio C++ Projekt einbinden, doch 
leider funktioniert es überhaupt nicht.

Ich habe zuerst die .dll heruntergeladen, dann in VS 2015 eine neue 
win32 Konsolenanwendung geöffnet, dann im Projektmappen-Explorer mit 
einem Rechtsklick auf mein Projekt -> Hinzufügen-> Verweis versucht die 
dll einzubinden. Unter Projekt-> Projektmappe steht da nur „keine 
Elemente gefunden“.
Und da gibt es keine weiteren Reiter oder Tabs um zu navigieren.

Zuvor habe ich die dll in den Projektordner (da wo die .sln ist) und 
zusätzlich noch in den debug Ordner gesteckt.

Bitte helft mir, ich habe im Internet überhaupt nichts dazu gefunden.
Die dll habe ich von hier: http://www.rgb-photonics.com/
Genauer geht der link leider gerade nicht, da die Website von der Firma 
gerade abgestürzt ist.
Ich würde gerne das Qmini Spektrometer mit einer Konsolenanwendung 
steuern.

Vielen Dank schon mal.
Gruß

: Verschoben durch User
von Peter II (Gast)


Lesenswert?

Was ist es denn für eine DLL?

Hat sie denn exportierte Symbole, wenn ja welche?
(Dependency Walker)

Hast du eine Header Datei dafür?


Ist es eine AktivX dll die erst registriert werden muss?

Ist es eine .net Dll?

von Praxsem (Gast)


Angehängte Dateien:

Lesenswert?

ne header hab ich keine.

.net dll weiß ich nicht worin der Unterschied ist.

Vielleicht hilft dir die dll im Anhang.

von Peter II (Gast)


Lesenswert?

Praxsem schrieb:
> .net dll weiß ich nicht worin der Unterschied ist.

PDF nur kurz überflogen

[...]
You can use the Qwave SDK with any programming language that can connect 
to .NET DLLs.
[...]


du brauchst also eine Programmiersprache die auf .net aufsetzt. Also C#, 
VB.net oder C++/CLI.

Normales C++ geht dafür nicht.

von Praxsem (Gast)


Lesenswert?

ah ok. Hab gedacht C++/CLI wäre eigentlich C++. Wusste ich nicht, dass 
es da einen Unterschied gibt.

Was schlägst du vor?
Was geht mit Visual Studio?

von Peter II (Gast)


Lesenswert?

Praxsem schrieb:
> Was schlägst du vor?

einfach C# verwenden - da kommt man nicht in die Verlegenheit es mit C++ 
zu vermischen.

von Praxsem (Gast)


Lesenswert?

ich hab noch nie mit c# gearbeitet.
muss mich da erst mal einarbeiten. dann habe ich bestimmt wieder fragen.

die syntax ist aber fast gleich wie c, oder? Wo sind die Unterschiede?

von Peter II (Gast)


Lesenswert?

Praxsem schrieb:
> ich hab noch nie mit c# gearbeitet.
> muss mich da erst mal einarbeiten.
müsstest du auch in C++/CLI

> dann habe ich bestimmt wieder fragen.
dann her damit


> die syntax ist aber fast gleich wie c, oder?
naja, es gibt gleiche Schlüsselworte in jeder Programiersprache z.b. 
"if" deswegen sind die noch lange nicht gleich.

> Wo sind die Unterschiede?
C# ist eine komplett andere Sprache mit anderen Möglichkeiten und 
objektorientiert.

von Praxsem (Gast)


Lesenswert?

dann sollte ich lieber c++/cli nehmen?!
Aber das ist bei mir nicht in Visual Studio in den Projekten enthalten. 
Kann ich da eine Erweiterung runterladen oder gehts einfach nicht?

Delphi sollte doch auch gehen? Das ist doch wie Pascal? Und das kann ich 
auch. Mit welcher IDE könnte ich dann arbeiten?

Was schlägst du vor?

von Peter II (Gast)


Lesenswert?

Praxsem schrieb:
> dann sollte ich lieber c++/cli nehmen?!

ich würde sage NEIN. Cli ist zwar ähnlich zu C++ aber doch nicht gleich. 
Da kommt man nur durcheinander.

> Delphi sollte doch auch gehen? Das ist doch wie Pascal? Und das kann ich
> auch. Mit welcher IDE könnte ich dann arbeiten?
keine Ahnung.


Versuch es doch mal mit C#, die 10min wirst du wohl haben. Dafür findet 
man auch genug Beispiele im netzt. C# ist die "echte" Sprache für .net

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Praxsem schrieb:
> Aber das ist bei mir nicht in Visual Studio in den Projekten enthalten.

Das sollte es sein, oder Du hast ein sehr merkwürdiges oder uraltes 
Visual Studio.

von Praxsem (Gast)


Lesenswert?

Ich habe das neue VS 2015. Gestern runtergeladen.

Leider hänge ich schon wieder.
Wie ist es möglich auf die Funktionen der dll zuzugreifen?

So stelle ich es mir in meinem Programm vor:

In der dll sind Funktionen enthalten, mit denen ich auf das Spektrometer 
zugreifen kann. Wenn ich die dll eingebunden habe, kann ich auf diese 
Funktionen zugreifen. So als ob es ganz normale Funktionen wären.

Aber wie komme ich an die Funktionen ran? Woher weiß ich was es gibt und 
welche syntax die Funktionen haben?

In dem Zip-Ordner, den ich oben reingelasen habe, kann man auch ein 
mitgeliefertes Beispielprogramm ansehen. Aber das ist, wenn ich es 
richtig verstehe halb in C++/Csi und halb in C++ geschrieben?!? Und 
warum sind nochmal alle Funktionen in dem Wrapper programmiert?

von Peter II (Gast)


Lesenswert?

schau dir doch mal im Zip das Projekt MultipleSpectrometers an, das ist 
C#.

Dort sind doch recht einfache aufrufe wie:
1
            Spectrometer[] RgbSpectrometersFound = RgbSpectrometer.SearchDevices();

drin.

von Mark B. (markbrandis)


Lesenswert?

Praxsem schrieb:
> Aber wie komme ich an die Funktionen ran? Woher weiß ich was es gibt und
> welche syntax die Funktionen haben?

Das steht in der Dokumentation. Ohne die macht die Verwendung 
irgendeiner Software-Library eher wenig Sinn, bzw. kann ein ziemlicher 
Krampf werden.

Auf der Homepage gibt es eine Datei namens:
SDK_Quick_Start_Guide.pdf

Da stehen einige Informationen drin.

: Bearbeitet durch User
von physiker (Gast)


Lesenswert?

Praxsem schrieb:
> Aber wie komme ich an die Funktionen ran? Woher weiß ich was es gibt und
> welche syntax die Funktionen haben?

Hast Du das von dir angehängte pdf eigentlich gelesen? Da steht:
The full documentation for these   methods   and   properties can   be 
found   in   the RgbDriverKit documentation.chm help file.

Ansonsten gibt es wie es die Beispiele in dem von Dir angehängten zip!

von Praxsem (Gast)


Lesenswert?

die hilfedatei geht bei mir nicht. kommt da bei euch was?
bei mir bleibt das fenster nur weiß.

aber mit der multipleSpectrometers datei komme ich vorwärts. muss mir 
halt alles genau anschauen.

von Tischrollbürste Fluppi (Gast)


Lesenswert?

Praxsem schrieb:
> dann sollte ich lieber c++/cli nehmen?!
> Aber das ist bei mir nicht in Visual Studio in den Projekten enthalten.

Templates -> Visual C++ -> CLR

Fertige Windows-Forms-Templates wirst du dort aber nicht finden, da 
C++/CLI nicht für komplette GUI-Projekte gedacht ist (obwohl es 
technisch möglich ist). Man kann C++/CLI eigentlich nur in drei 
Szenarien sinnvoll einsetzen:

- Für Wrapper, die es ermöglichen, "native" Bibliotheken in .NET zu 
benutzen (ohne P/Invoke). Das dürfte wohl den Löwenanteil aller 
C++/CLI-Projekte ausmachen.

- Wrapper, mit deren Hilfe man .NET-Bibliotheken in "nativen" 
Bibliotheken/Programmen verwenden kann (ohne COM). Falls du auf keinen 
Fall C# verwenden willst, wäre das vielleicht eine Möglichkeit.
http://pragmateek.com/using-c-from-native-c-with-the-help-of-ccli-v2/

- Kommandozeilen-Tools, die sowohl auf "echte" C/C++-Bibliotheken als 
auch auf .NET zugreifen müssen.

von Peter II (Gast)


Lesenswert?

Praxsem schrieb:
> die hilfedatei geht bei mir nicht. kommt da bei euch was?

ja,

kann es sein das du die chm von einen Netzwerklaufwerk öffnest? Das ist 
im Standard nicht zulässig und es kommt eine leer Seite.

von Tischrollbürste Fluppi (Gast)


Lesenswert?

Praxsem schrieb:
> die hilfedatei geht bei mir nicht. kommt da bei euch was?
> bei mir bleibt das fenster nur weiß.

Evtl. Rechtsklick auf die Datei und "Zulassen".
http://www.wintotal.de/images/tipps/1179_Zonenbit.png

von Tischrollbürste Fluppi (Gast)


Lesenswert?

Rechtsklick -> Eigenschaften (oder Alt+Return) meinte ich, sorry.

von Praxsem (Gast)


Lesenswert?

ja war vom netzwerklaufwerk. hab in der registry und den einstellungen 
was geändert. jetzt klappts :)

sehr guter Tipp!!!!!

von Peter II (Gast)


Lesenswert?

Praxsem schrieb:
> ja war vom netzwerklaufwerk. hab in der registry und den einstellungen
> was geändert. jetzt klappts :)

war ja klar

von Mark B. (markbrandis)


Lesenswert?

Peter II schrieb:
> kann es sein das du die chm von einen Netzwerklaufwerk öffnest? Das ist
> im Standard nicht zulässig und es kommt eine leer Seite.

Dass das so ist war mir bekannt. Nur warum es so ist hab ich nie 
verstanden. Kennst Du vielleicht den Grund?

von Peter II (Gast)


Lesenswert?

Mark B. schrieb:
> Nur warum es so ist hab ich nie
> verstanden. Kennst Du vielleicht den Grund?

es wurden schon viren über CHM verbreitet. Diese konnte dann übers 
Internet geladen werden. Dazu reichte eine Webseite mit mit JavaScript 
und der passenden URL file://server.de/virus.crm

Das ganze hängt glaube ich mit dem Zonenmodell vom IE/Windows zusammen. 
Wenn das Netzlaufwerk als Intranet Zone eingetragen ist, müsste es auch 
gehen.

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.