.dll einbinden C++

Gast #4743444
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ß
Gast #4743448
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?
Gast #4743465
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.
Gast #4743490
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.
Gast #4743499
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?
Gast #4743501
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
Gast #4743646
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?
Gast #4743659
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.
#4743685
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.
Gast #4743705
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!
Gast #4743746
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.
Gast #4743905
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren