auf Bibliothek(DLL) zugreifen Code C# zu C++
-
Hallo , ich benutze zur Schrittmotorprogrammierung eine DLL : CommandPd4I.dll .
Ich habe ein kleines C# Projekt : Dort ist die CommandPD4.dll hinzugefügt;using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using CommandsPD4I; //Die DLL für die Steuerung namespace CSharpExample { public partial class CSharpExample : Form { public CSharpExample() { InitializeComponent(); } private void StartBtn_Click(object sender, EventArgs e) { ComMotorCommands cmd = new ComMotorCommands(); //Klasse aus COMMANDPD4.dll cmd.SelectedPort = ComPortBox.Text; cmd.Baudrate = Convert.ToInt32(BaudrateBox.Text); //Motor konfigurieren & starten cmd.SetAddress(Convert.ToInt32(Motor1ID.Value)); //1 entspricht dem Positioniermodus cmd.SetOperationMode(1); //1 entspricht relativer positionierung cmd.SetPositionType(1); //100 Hz cmd.SetMaxFrequency(100); cmd.StartTravelProfile(); } } }
Mein Problem : Ich muss auf die DLL mit Visual c++ zugreifen.
Kann mir jemand sagen wie man das macht ?
Wenn ich eine Formanwendung starte habe ich eine Headerdatei Form1.h .
Kann ich dort sowas schreiben wie
using namespace COMMANDPD4.dll ???Gruß
Torsten
-
Füge die Assembly einfach dem Projekt hinzu (Projekt|Properties|Common Properties|Add New Reference...
Das kannst Du die in C++/CLI direkt verwenden!!!!
Beachte aber: Du machst kein C/C++ sondern C++/CLI!!! dann kannst Du eigentlich gleich bei C# bleiben...
WARUM willst Du C++/CLI machen?????
-
Jochen Kalmbach schrieb:
Füge die Assembly einfach dem Projekt hinzu (Projekt|Properties|Common Properties|Add New Reference...
Das kannst Du die in C++/CLI direkt verwenden!!!!
Beachte aber: Du machst kein C/C++ sondern C++/CLI!!! dann kannst Du eigentlich gleich bei C# bleiben...
WARUM willst Du C++/CLI machen?????
Wenn ich die Reference hinzugefügt habe: kann ich dann wie beim C#
eine Klasse erzeugen mit:
ComMotorCommands cmd = new ComMotorCommands(); ???
--> Fehler:Nichtdeklarierter Bezeichner, er findet die Funktion ComMotorCommands nicht!?Muss man nicht noch im Quellcode die Dll importieren ??
Oder wie beim C# Projekt die DLL dem Projekt als datei hinzufügen?(Ich benutze C++ mit Visual Studio weil ich mich damit eingearbeitet habe und ich das Visual C++ -Buch habe .
Ich weiß auch nicht wozu mann C# eigentlich benutzt?)
-
Oje...
-
theta schrieb:
Oje...
! bitte genauer
Also habe verweise hinzugefügt ,
dann habe ich in der Haup.cppusing namespace CommandsPD4I;
int main(..)
{
ComMotorCommands cmd = gcnew ComMotorCommands();
}ergibt Fehler:1> "CommandsPD4I::ComMotorCommands": Die Klasse hat keinen Kopierkonstruktor.
-
#include "stdafx.h" #include "Form1.h" using namespace nano; using namespace CommandsPD4I; //void ComMotorCommands(); [STAThreadAttribute] int main(array<System::String ^> ^args) { // Aktivieren visueller Effekte von Windows XP, bevor Steuerelemente erstellt werden Application::EnableVisualStyles(); Application::SetCompatibleTextRenderingDefault(false); // Hauptfenster erstellen und ausführen //ComMotorCommands^ cmd = gcnew ComMotorCommands(); ComMotorCommands^ cmd = gcnew ComMotorCommands(); Application::Run(gcnew Form1()); return 0; }
oh so müsste es gehn hab das ^ vergessen ,
ich dachte ich brauch noch ne headerdatei , aber das geht wohl auch so, kann jetzt mit cmd->.... auf alle funktionen zugreifen.
danke