Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   
Forentreff 2012     
Bücher-Shop mit Amazon (Buchkategorien)C++ : Referenzen zu C++ : C++ Builder : Visual C++ : C# : Java : Spieleprogrammierung : Systemprogrammierung Linux : Software-Entwicklung : .NET : Compilertechnik : Algorithmen & Datenstrukturen : Objektorientierung : Entwurfsmuster : UML : eXtreme Programming : Scrum : Projektmanagement : Software-Testing : Datenbanken : Tom DeMarco : Dilbert : User Friendly
C/C++ Forum :: C++/CLI mit .NET ::  POS Drucker mit PointOfService ansprechen     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
biedego
Mitglied

Benutzerprofil
Anmeldungsdatum: 17.01.2006
Beiträge: 15
Beitrag biedego Mitglied 13:11:17 20.01.2012   Titel:   POS Drucker mit PointOfService ansprechen            Zitieren

Hallo

hat schon jemand mit PointOfService unter C++\CLI gearbeitet ?

Ich bekomme den Namespace nicht eingebunden. Wenn man das den so macht.

using namespace Microsoft::PointOfService;
Fehler:
'PointOfService': Ist kein Element von 'Microsoft'
'PointOfService': Es ist kein Namespace mit diesem Namen vorhanden

mein Beispiel was ich habe läuft unter C# wollte ich nach C++ holen.

Unter C#
wird unter References Microsoft.PointOfService eingebunden
und mit
using Microsoft.PointOfService;
benutzt
Jochen Kalmbach
Moderator

Benutzerprofil
Anmeldungsdatum: 11.11.2005
Beiträge: 11525
Beitrag Jochen Kalmbach Moderator 14:30:10 20.01.2012   Titel:              Zitieren

Unter C++/CLI musst Du genau das gleiche machen, wie unter C#... die _musst_ Du aber Referenz in den Projekteinstellungen einbinden!

_________________
Greetings
Jochen
(Microsoft MVP VC++) My blog about Win32 and .NET: http://blog.kalmbach-software.de/ (deutsch)
biedego
Mitglied

Benutzerprofil
Anmeldungsdatum: 17.01.2006
Beiträge: 15
Beitrag biedego Mitglied 11:47:49 23.01.2012   Titel:              Zitieren

Hallo

kannst du das genauer angeben wo genau in den C++ Einstellungen man die
Referenz abgeben muss ?

In meinen C# Beispiel ist unter References
Microsoft.PointOfService eingetragen
welcher unter Eigenschaft und Path folgende Angaben hat:
C:\Windows\assembly\GAC_MSIL\Microsoft.PointOfService\1.12.0.0__31bf3856ad364e35\Microsoft.PointOfService.dll
Jochen Kalmbach
Moderator

Benutzerprofil
Anmeldungsdatum: 11.11.2005
Beiträge: 11525
Beitrag Jochen Kalmbach Moderator 10:25:28 24.01.2012   Titel:              Zitieren

Rechts-Klick auf das projekt, dann Properties|Common Properties|Add New Reference..

_________________
Greetings
Jochen
(Microsoft MVP VC++) My blog about Win32 and .NET: http://blog.kalmbach-software.de/ (deutsch)
biedego
Mitglied

Benutzerprofil
Anmeldungsdatum: 17.01.2006
Beiträge: 15
Beitrag biedego Mitglied 13:33:43 24.01.2012   Titel:              Zitieren

Hallo

hat alles geklappt, ich kann jetzt den Namespace von
Mirosoft.PontOfService nutzten.

Ich habe das C# in C++ umgesetz aus :

PosPrinter m_Printer = null;
DeviceInfo deviceInfo = null;
string strLogicalName = "Epson-TM88";

PosExplorer posExplorer = new PosExplorer();
try
{
deviceInfo = posExplorer.GetDevice(DeviceType.PosPrinter,strLogicalName);
m_Printer = (PosPrinter)posExplorer.CreateInstance(deviceInfo);
}
catch(Exception)
{
ChangeButtonStatus();
return;
}

wurde:

PosPrinter^ m_Printer;
DeviceInfo^ deviceInfo;
PosExplorer^ posExplorer = gcnew PosExplorer();

String^ strLogicalName = "Epson-TM88";

try
{
deviceInfo = posExplorer->GetDevice(DeviceType::PosPrinter,strLogicalName);
m_Printer = (PosPrinter^)posExplorer->CreateInstance(deviceInfo);

}
catch(Exception^ e)
{
ChangeButtonStatus();
MessageBox::Show( this, e->Message, "Init Drucker" );
}

es lässt sich auch alles compilieren, nur bekomme ich in C++
immer einen Exception wenn "PosExplorer^ posExplorer = gcnew PosExplorer();"
aufgerufen wird mit der Meldung:

"Der Typeninitialisierer für "Mircosoft.PointOfService.Management.Explorer" hat eine Ausnahme verursacht"

Ich habe jetzt festgestellt das in C# die Zielframework auf 2.0 festgelegt ist.
Ich kann die Zielframework bis auf 3.5 erhöhen und es funktioniert.

Wenn ich in C# die Zielframework auf 4.0 einstelle bekomme ich hier auch den
Fehler bei Aufruf von: PosExplorer posExplorer = new PosExplorer(); mit der selben Meldung wie in C++.

Kann man in C++ die Zielframework umstellen, und wo ?
Kann man heraus finden warum es mit der Zielframework 4.0 diesen Fehler gibt ?
Jochen Kalmbach
Moderator

Benutzerprofil
Anmeldungsdatum: 11.11.2005
Beiträge: 11525
Beitrag Jochen Kalmbach Moderator 14:10:26 24.01.2012   Titel:              Zitieren

Siehe: Ändern des .NET TargetFrameworks in VS2010 für C++/CLI Projekte
http://blog.kalmbach-software.de/de/2011/01/04/andern-des-net-targetframeworks-in-vs2010-fur-ccli-projekte/

Um es herauszufinden, musst Du Dir die InnerException anschauen!

_________________
Greetings
Jochen
(Microsoft MVP VC++) My blog about Win32 and .NET: http://blog.kalmbach-software.de/ (deutsch)


Zuletzt bearbeitet von Jochen Kalmbach am 14:11:38 24.01.2012, insgesamt 1-mal bearbeitet
biedego
Mitglied

Benutzerprofil
Anmeldungsdatum: 17.01.2006
Beiträge: 15
Beitrag biedego Mitglied 15:21:30 24.01.2012   Titel:              Zitieren

Hallo

ok die Framework konnte ich so umstellen, sofort kommt dieser Fehler:

1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets(292,5): error MSB8009: .NET Framework 2.0/3.0/3.5 wurden für das v90-Plattformtoolset konzipiert. Stellen Sie sicher, dass auf dem Computer Visual Studio 2008 installiert ist.

Muss ich jetzt wirklich Visual Studio 2008 installieren ? oder gibt es eine andere
Möglichkeit.

Wieso kann ich in C# die Framework umstellen , dort kommt ja auch nicht dieser Fehler ?
biedego
Mitglied

Benutzerprofil
Anmeldungsdatum: 17.01.2006
Beiträge: 15
Beitrag biedego Mitglied 15:44:56 24.01.2012   Titel:              Zitieren

Die Fehlermeldung der InnerException :

+ InnerException 0x0272b558 { "Diese Methode verwendet explizit die CAS-Richtlinie, die aufgrund von .NET Framework veraltet ist. Um die CAS-Richtlinie aus Kompatibilitätsgründen zu aktivieren, verwenden Sie den NetFx40_LegacySecurityPolicy-Konfigurationsschalter. Weitere Informationen finden Sie unter http://go.microsoft.com/fwlink/?LinkID=155570."} System::Exception^

Unter http://go.microsoft.com/fwlink/?LinkID=155570 wird angeben das man:

<configuration>
<runtime>
<NetFx40_LegacySecurityPolicy enabled="true"/>
</runtime>
</configuration>

einstellen soll, wo finde ich das in C++ und C# ?
Jochen Kalmbach
Moderator

Benutzerprofil
Anmeldungsdatum: 11.11.2005
Beiträge: 11525
Beitrag Jochen Kalmbach Moderator 15:45:13 24.01.2012   Titel:              Zitieren

C++/CLI benötigt die C-Runtime und somit auch den passenden Compiler. Wenn Du eine Assembly verwendest, die nur .NET 2 (bzw. 3.5) kann, so musst Du auch VS2008 verwenden bzw. dies muss auf Deinem Rechner vorhanden sein, dann kannst Du auch VS2010 verwenden, im Hintergrund wird aber VS2008 verwendet...

Du hast nun 2 Möglichkeiten:
1. Finde den Fehler in der Assembly und besorge Dir eine neue Version...
2. Installiere VS2008...

_________________
Greetings
Jochen
(Microsoft MVP VC++) My blog about Win32 and .NET: http://blog.kalmbach-software.de/ (deutsch)
Jochen Kalmbach
Moderator

Benutzerprofil
Anmeldungsdatum: 11.11.2005
Beiträge: 11525
Beitrag Jochen Kalmbach Moderator 15:48:04 24.01.2012   Titel:              Zitieren

biedego schrieb:
Unter http://go.microsoft.com/fwlink/?LinkID=155570 wird angeben das man:
<configuration>
<runtime>
<NetFx40_LegacySecurityPolicy enabled="true"/>
</runtime>
</configuration>

einstellen soll, wo finde ich das in C++ und C# ?


Du musst eine Dateie "AppName.exe.config" in das selber Verzecihnis legen wie die Exe. Dort muss dies dann rein... Es gibt AFAIK in C++/CLI keinen Automatismus, der dies macht; so wie in C#...

_________________
Greetings
Jochen
(Microsoft MVP VC++) My blog about Win32 and .NET: http://blog.kalmbach-software.de/ (deutsch)
biedego
Mitglied

Benutzerprofil
Anmeldungsdatum: 17.01.2006
Beiträge: 15
Beitrag biedego Mitglied 16:58:51 24.01.2012   Titel:              Zitieren

Besten Dank, funktioniert so
C/C++ Forum :: C++/CLI mit .NET ::  POS Drucker mit PointOfService ansprechen   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.