Dll /// lib ansprechen
-
schulz schrieb:
muss ich denn eine Consolenanwendung haben um mit dll bzw. lib zu arbeiten?
Nein. Wie kommst du darauf?
-
Oo
Habe ich auf meiner suche mal irgendwo gelesen.
Also schreibe ich das einfach ins Programm mit rein? Mal gucken ob das klappt!Danke schon einmal!!
-
und die .lib datei wo muss ich die hinpacken muss ich die ins Programm einbinden? Wenn ja wie mache ich das?!
-
Ich bekomm es einfach nicht hin;)
immer wieder hat er ér was zu Meckern ich schreib mal wie ich das gemacht habe.
Zu erst Neues Prjekt WindowsForm-AnwendungDann in Form1.h:
#pragma once
#pragma comment(lib, "K8055D_C")
#include "stdafx.h"namespace Heute {
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;public ref class Form1 : public System::Windows::Forms::Form
{
public:
Form1(void)
{
InitializeComponent();
/
}protected:
~Form1()
{
if (components)
{
delete components;
}
}
private: System::Windows::Forms::Button^ button1;
protected:
private: System::Windows::Forms::Button^ button2;private:
System::ComponentModel::Container ^components;
#pragma region Windows Form Designer generated code
void InitializeComponent(void)
{
this->button1 = (gcnew System::Windows::Forms::Button());
this->button2 = (gcnew System::Windows::Forms::Button());
this->SuspendLayout();
//
// button1
//
this->button1->Location = System::Drawing::Point(105, 54);
this->button1->Name = L"button1";
this->button1->Size = System::Drawing::Size(75, 23);
this->button1->TabIndex = 0;
this->button1->Text = L"button1";
this->button1->UseVisualStyleBackColor = true;
this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
//
// button2
//
this->button2->Location = System::Drawing::Point(105, 120);
this->button2->Name = L"button2";
this->button2->Size = System::Drawing::Size(75, 23);
this->button2->TabIndex = 1;
this->button2->Text = L"button2";
this->button2->UseVisualStyleBackColor = true;
this->button2->Click += gcnew System::EventHandler(this, &Form1::button2_Click);
//
// Form1
//
this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
this->ClientSize = System::Drawing::Size(292, 266);
this->Controls->Add(this->button2);
this->Controls->Add(this->button1);
this->Name = L"Form1";
this->Text = L"Form1";
this->ResumeLayout(false);}
#pragma endregion
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
{
OpenDevice;
}
private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e)
{
SetAllDigital;
}
};
}Dann Habe ich die .lib Datei mit der Maus einfach ins Programm gezogen per click and drop!
Danach habe ich in die stdfx.h den Inhalt der .h Datei die ich hatte rein kopiert:
#ifdef __cplusplus
extern "C" {
#endif#define FUNCTION __declspec(dllexport)
FUNCTION long __stdcall OpenDevice(long CardAddress);
VOID __stdcall CloseDevice();
FUNCTION long __stdcall ReadAnalogChannel(long Channel);
VOID __stdcall ReadAllAnalog(long *Data1, long *Data2);
VOID __stdcall OutputAnalogChannel(long Channel, long Data);
VOID __stdcall OutputAllAnalog(long Data1, long Data2);
VOID __stdcall ClearAnalogChannel(long Channel);
VOID __stdcall ClearAllAnalog();
VOID __stdcall SetAnalogChannel(long Channel);
VOID __stdcall SetAllAnalog();
VOID __stdcall WriteAllDigital(long Data);
VOID __stdcall ClearDigitalChannel(long Channel);
VOID __stdcall ClearAllDigital();
VOID __stdcall SetDigitalChannel(long Channel);
VOID __stdcall SetAllDigital();
FUNCTION bool __stdcall ReadDigitalChannel(long Channel);
FUNCTION long __stdcall ReadAllDigital();
FUNCTION long __stdcall ReadCounter(long CounterNr);
VOID __stdcall ResetCounter(long CounterNr);
VOID __stdcall SetCounterDebounceTime(long CounterNr, long DebounceTime);VOID __stdcall Version();
FUNCTION long __stdcall SearchDevices();
FUNCTION long __stdcall SetCurrentDevice(long lngCardAddress);#ifdef __cplusplus
}
#endifDie passende .dll datei habe ich in den Ordner gepackt wo ich das Programm gespeichert habe!
Wenn ich dann unter erstellen Projektmappe erstellen und danach Debuggen Starte drücke sagt er mir: Das System kann den angegebenen Pfad nich finden!´
Und erstellt keine .exe in dem Verzeichnis was mache ich falsch?!?!
-
Hat deine lib-Datei nicht die Endung ".lib"? Die hast du schon mal vergessen. Und das Einbinden der Header-Datei fehlt völlig. Schau dir doch die 2 Zeilen, die Jochen geschrieben hat, noch mal ganz genau an.
Btw, das ist da C++/CLI und hat mit MFC nichts zu tun. C++/CLI hat hier ein eigenes Board. Da gehört die Frage also eher hin (du wirst sicher gleich verschoben).
-
Dieser Thread wurde von Moderator/in Martin Richter aus dem Forum MFC (Visual C++) in das Forum C++/CLI mit .NET verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Achso sorry, kenn mich leider überhaupt nicht damit aus...
-
er erkennt immer noch nicht die DLL oder die lib datei!
-
Ja was jetzt!? DLL oder LIB? Fehlermeldung?
-
Fehler meldung sagt der das er mit den Text der in der .h Datei steht nichts anfangen kann.
Aber mit Visual c++ Express kann ich doch was machen oder? Also so eine Externe ein und Ausgangskarte ansteuern ne?
-
schulz schrieb:
Fehler meldung sagt der das er mit den Text der in der .h Datei steht nichts anfangen kann.
Zeige die Fehlermeldung.
schulz schrieb:
Aber mit Visual c++ Express kann ich doch was machen oder? Also so eine Externe ein und Ausgangskarte ansteuern ne?
Kommt auf die Karte und ihre mitgelieferte API an. Welche Karte ist es?
Simon
-
schulz schrieb:
Fehler meldung sagt der das er mit den Text der in der .h Datei steht nichts anfangen kann.
Du musst schon den genauen Fehlertext posten. Mit eigenen Interpretationen kann hier keiner was anfangen.
-
Ist eine K8055
Was gibt es denn noch für c++ Software! Ich bin nämlich echt am Durchdrehn habe es 1000 mal probiert aber es will nicht klappen!
-
Der Vollständigkeitshalber, hier die Herstellerseite mit Treiber Download:
http://www.velleman.eu/distributor/products/view/?id=351346Ok, es scheint folgendermassen:
1. Lade von der Seite die Datei k8055_dll_2_001.zip herunter und extrahiere die Dateien.
2. Kopiere die Dateien K8055D.dll, K8055D_C.dll, K8055D_C.lib, K8055D_C.h zu deinem Projekt.
3. Benutze die Header Datei K8055D_C.h um die Funktionen für die Ansteuerung der Karte zu machen. Der Kompiler ist damit zufrieden.
4. Mache dem Linker die Datei K8055D_C.lib bekannt (z.B. über die Projekt Einstellungen beim Linker Input). Der Linker sollte jetzt damit zufrieden sein.
5. Kopiere die K8055D_C.dll (und ev. auch die K8055D.dll) in dasselbe Verzeichnis wie dein Programm EXE liegt. So sollte es ausführbar sein.
6. Führe es jetzt aus.BTW: Das hat rein gar nichts mit C++/CLI zu tun, sondern ist "simple" C++ Programmierung unter Windows.
Empfehlenswert sind sicher auch die anderen Downloads, welche auch Demo Programme (inkl. Source) enthalten.
Simon
-
Schon einmal danke Simon Probier ich gleich mal aus wenn ich zu Hause bin! Die Dll Lib und H Datei habe ich eig. Schon bekamm es aber trotzdem nicht hin:(.
Bill. Mache ich ja was grundsätzliches falsch, denn wenn ich das Testprogramm mit Visual öffne und dann starten möchte meckert der auch schon rum… ich melde mich dann heute Abend ob rs geklappthat!
Gruß Christian
-
So,
ich habe ein Neues Projekt gemacht: Datei-Neu--Projekt-Windows Forms-Anwendung!Danach habe ich die K8055D_C.h in den Ordner gepackt wo auch z.B. Form1.h ist und in mein Programm gepackt!
In Form1.h habe ich #include "K8055D_C" geschrieben und 2 Button erstellt!
die .lib Datei weiß ich nicht genau ob ich das richtig gemacht habe, habe sie in den Selben Ordner wie die K8055D_C.h gepackt und im Programm unter Projekteigenschaften-Linker-Eingabe unter Zusätzliche Abhängigkeit gepackt, aber ich musste nirgends eingeben wo sich die .lib datei befindet ist das richtig?
Dann habe ich "Erstellen"-"projektmappe erstellen" gedrückt und anschließent auf Debuggen starten doch dann sagt er das er die .exe nicht finden kann.
Als Fehlermeldung steht dann:
1. error C3389: _declspec/dllexport) kann bei /clr:pure oder /clr:safe nicht verwendet werden (in der K8055D_C.h Datei)2. error C4430: Fehlender Typspezifischer - int wird angenommen. Hinweis: "default-int" wird von c++ nicht unterstützt"
Ich hoffe das Hilft ein wenig!
Gruß christian
-
Ich würde als erstes Test Programm einfach mal eine Win32 Consolen Anwendung (Typ Win32 Console Application) machen. Keine .NET Geschichten.
Simon
-
Alles klar ich versuche es erneut:)
-
Hi,
ich scheint zu klappen habe nur meine Karte gerade nicht da, zumindestens sagt er kein Fehler doch das Programm endet sofort nach dem Start wie kann ich es einstellen das ich es selber beendet kann??mfg
-
Consolen Programme da um auf der Console ausgeführt zu werden, dann würde sich dein Problem gar nicht stellen...
Das hilft weiter:
http://www.c-plusplus.net/forum/111042