| Autor |
Nachricht |
biedego
Mitglied
Benutzerprofil
Anmeldungsdatum: 17.01.2006
Beiträge: 15
|
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
|
Jochen Kalmbach Moderator
14:30:10 20.01.2012 Titel: |
|
Zitieren |
|
 |
biedego
Mitglied
Benutzerprofil
Anmeldungsdatum: 17.01.2006
Beiträge: 15
|
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
|
Jochen Kalmbach Moderator
10:25:28 24.01.2012 Titel: |
|
Zitieren |
|
 |
biedego
Mitglied
Benutzerprofil
Anmeldungsdatum: 17.01.2006
Beiträge: 15
|
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
|
Jochen Kalmbach Moderator
14:10:26 24.01.2012 Titel: |
|
Zitieren |
|
 |
biedego
Mitglied
Benutzerprofil
Anmeldungsdatum: 17.01.2006
Beiträge: 15
|
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
|
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
|
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
|
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
|
biedego Mitglied
16:58:51 24.01.2012 Titel: |
|
Zitieren |
Besten Dank, funktioniert so |
|
|
|
 |