LabVIEWForum.de
Einführung inLabVIEW Kapitel 15 - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: DLL & externer Code (/Forum-DLL-externer-Code)
+---- Thema: Einführung inLabVIEW Kapitel 15 (/Thread-Einfuehrung-inLabVIEW-Kapitel-15)

Seiten: 1 2


Einführung inLabVIEW Kapitel 15 - subzero128 - 19.08.2009 15:44

Hi,

folgendes Problem im Kapitel 15 soll man in c++ eine Dll Datei schreiben und in LabVIEW einbinden. Ich schaffe es aber einfach nicht mit meinem Compiler diese blöde dll datei zu erstellen ich habe Visual c++ 2005 Express Edition ich gehe wie beschrieben auf projekt neu erstellen dann auf win32 konsolenanwendung und auf der nächsten seite habe ich folgendes zur Auswahl :(siehe screens)

wie dem auch sei ich habe die konsolenanwendung gewählt und den haken bei "vorkompilie. header"
weggemacht. In der Hilfe heißt es das nicht jeder Compiler die Dll zur Auswahl zur Verfügung stellt Zitat:

"Einige Versionen von Visual Studio bieten keine Unterstützung für das Erstellen eines DLL-Projekts mithilfe von Assistenten. Sie können jedoch später festlegen, dass das Projekt in eine DLL kompiliert wird"

unszwar so laut hilfe:"Um aus dem Projekt eine DLL zu erstellen, wählen Sie im Menü Projekt das Projekt MathFuncsDll und dann die Option Eigenschaften... aus. Wählen Sie im linken Bereich unter Konfigurationseigenschaften die Option Allgemein aus. Ändern Sie im rechten Bereich den Konfigurationstyp in Dynamische Bibliothek (.dll). Klicken Sie auf OK, um die Änderungen zu speichern"

hab ich alles so gemacht aber in LabVIEW laut autor sollte folgender Code von alleine erstellt werden:

//Reihe.cpp Definiert den Einsprungspunkt für die DLL-Anwendung
//

#include "stdafx.h"

BOOL APIENTRY DllMain (Handle hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{return TRUE;}

und jetzt erst den Code den ich eingeben will (eine Reihen_berechnung)

irgendjemand ne Idee wie man das machen könnte?


Einführung inLabVIEW Kapitel 15 - Y-P - 19.08.2009 16:21

Hab' das Thema in ein anderes Unterforum verschoben, aber helfen kann ich Dir leider nicht. Wieso willst Du denn eine DLL erstellen?

Gruß Markus


Einführung inLabVIEW Kapitel 15 - subzero128 - 19.08.2009 16:25

es geht um folgende übung mit c++ eine DLL erstellen indem man eine formel zur reihen-berechnung programmiert hat und dann diese datei in LabVIEW einbinden und ausführen.


Einführung inLabVIEW Kapitel 15 - subzero128 - 19.08.2009 16:51

ok ich bin schon ein kleines stück weiter habe im netz ein bissle gestöbert und folgendes funktioniert jetzt :
habe die microsoft SDK plattform installiert und ich kann jetzt bei dem Assistenten die DLL-Erstellung auswählen dann erhalte ich das hier(siehe screen) ich konnte meine Formle eingeben und habe dann auf Kompillieren gedrückt. aber da kam noch diese Fehlermeldung weiß jemand was das is? und noch was im debug ordner gibt es keine .dll datei sondern eine .dll.embed.manifest die kann ich mit LabVIEW nicht auswählen die erkennt er nicht als .dll an und somit funktioniert auch nicht das einbinden


Einführung inLabVIEW Kapitel 15 - Y-P - 19.08.2009 16:56

Bahn. Am besten warstest Du mal auf "rolfk" oder "IchSelbst". Die haben bei Fragen mit dll's schon öfters geholfen. Wink

Gruß Markus


Einführung inLabVIEW Kapitel 15 - jg - 19.08.2009 22:14

Offtopic
Vielleicht solltest du die Frage eher in einem C/C++ Forum stellen.
Das hier ist das LabVIEWForum.

Und deine bisherigen Fragen gehören bestimmt nicht in den Tutorial-Bereich. Der ist für veröffentlichte Tutorials, nicht für Übungsfragen aus deinem Buch.

Gruß, Jens


Einführung inLabVIEW Kapitel 15 - abrissbirne - 20.08.2009 07:32

' schrieb:ich konnte meine Formle eingeben und habe dann auf Kompillieren gedrückt.
Mit der Formel kannst du noch rein gar nichts anfangen, da du sie nicht exportierst. Wenn du Funktionen einer DLL verfügbar machen möchtest musst du vor deine Funktion
<div class='codetop'>CODE</div><div class='codemain' style='height:200px;white-space:pre;overflow:auto'>__declspec(dllexport)</div> setzen.
' schrieb:aber da kam noch diese Fehlermeldung weiß jemand was das is?
Der Fehlercode bezieht sich auf eine Headerdatei die du hier nicht gepostet hast. Ich könnte mir vorstellen das
<div class='codetop'>CODE</div><div class='codemain' style='height:200px;white-space:pre;overflow:auto'>#ifdef MANAGED</div>
den Fehler verursacht, da du es zweimal definierst.
' schrieb:und noch was im debug ordner gibt es keine .dll datei sondern eine .dll.embed.manifest die kann ich mit LabVIEW nicht auswählen die erkennt er nicht als .dll an und somit funktioniert auch nicht das einbinden
Du hast bestimmt zwei Debugordner. In einer befindet sich die ...manifest. Geh in deiner Verzeichnisstruktur mal eine Ebene höher.


Einführung inLabVIEW Kapitel 15 - IchSelbst - 20.08.2009 10:42

Kann es sein, dass du deine IDE falsch installiert hast? Die Pfadtrenner, die man im geposteten Bild sieht, sind doch falsche Zeichen. Gehört da nicht ein "" (oder "/") her? Nicht dass du mit Include-Files für unterschiedliche Sprachen bzw. Betriebssysteme arbeitest.


Einführung inLabVIEW Kapitel 15 - subzero128 - 20.08.2009 13:27

[quote name='abrissbirne' date='20.08.2009 , 08:32:32' post='79352']
Mit der Formel kannst du noch rein gar nichts anfangen, da du sie nicht exportierst. Wenn du Funktionen einer DLL verfügbar machen möchtest musst du vor deine Funktion
<div class='codetop'>CODE</div><div class='codemain' style='height:200px;white-space:pre;overflow:auto'>__declspec(dllexport)</div> setzen.


Also ich hab jetzt folgendes gemacht: erstmal das microsoft visual 2005 deinstalliert und das neue 2008 c++ express edition installiert und das von oben mit dem export hab ich jetzt auch vor meine funktion geschrieben nun kam nur noch ein fehler (siehe screen) es taucht auch jetzt im debug ordner eine .dll datei auf LabVIEW jammert immer noch das er die funktion in der bibliothek nicht finden konnte zitat:

"Der Funktionsname konnte in der Bibliothek nicht gefunden werden. Mit einem Rechtsklick auf den Knoten "Aufruf externer Bibliotheken" und Auswahl von "Konfigurieren" können Sie den richtigen Funktionsnamen angeben"

im buch hieß es ebenfals das ich eine .def datei erstellen müsste? ka was das ist jedenfalls hab ich eine erstellt und sie in die quelldateien mit eingebunden weiß nicht ob das so stimmt (siehe screen)


Einführung inLabVIEW Kapitel 15 - IchSelbst - 20.08.2009 14:07

' schrieb:nun kam nur noch ein fehler (siehe screen)
Ist ja klar: die DLL ist in Verwendung - von LV. Demzufolge kann sie nicht überschrieben werden. Du musst also zuerst das VI (oder gar LV?, oder das VI aus dem Speicher entfernen (FP und BD schließen) beenden, erst dann kann die DLL überschrieben werden.

Zitat:"Der Funktionsname konnte in der Bibliothek nicht gefunden werden. Mit einem Rechtsklick auf den Knoten "Aufruf externer Bibliotheken" und Auswahl von "Konfigurieren" können Sie den richtigen Funktionsnamen angeben"
Stimmt denn auch die Aufrufkonvention überein zwischen dem DLL-Knoten in LV und der Definition in der DLL?