Computer Community

Lösungssuche (neue Beiträge, gelöst)Deuten von Compilercode C++.Net MFC

0

Frage

Moin es währe nett wenn mir jemand folgenden Compiler code einmal deuten könnte:

Die ersten Warnungen sind mir schnuppe und kommen Daher:

this->toolStripProgressBar1->Increment(- Zähler);

Unwichtig nicht weiter zu beachten.

Wichtig sind nur die Linker Fehler ich hab absolut keinen plan woher die kommen, sind aber nachdem ich eine Neue Funktion geschrieben hab Convert von system Strings in std strings und damit einfach immer den code dieser Funktion aus meiner Form Rausgenommen hab, und in ein Header geschrieben auf den die Form zugreifen kann.

std::string CONVERTTOSTRING( String^ INPUTS )
{
array<Byte> ^chars = System::Text::Encoding::ASCII->GetBytes(INPUTS);
pin_ptr<Byte> charsPointer = &(chars[0]);
char *nativeCharsPointer = reinterpret_cast<char *>(static_cast<unsigned char *>(charsPointer));
std::string native1(nativeCharsPointer, chars->Length);
return native1;
}

bool ISDIG( String^ INPUTSB )
{
array<Byte> ^chars = System::Text::Encoding::ASCII->GetBytes(INPUTSB);
pin_ptr<Byte> charsPointer = &(chars[0]);
char *nativeCharsPointer = reinterpret_cast<char *>(static_cast<unsigned char *>(charsPointer));
std::string native2(nativeCharsPointer, chars->Length);
bool digit1 = native2.find_first_not_of("-0123456789,") == std::string::npos;
return digit1;
}

Ich denke ich muss nicht sagen was das untere is.

Und im Progamm hab ich demendsprechend die anweisung von ...

{
array<Byte> ^chars = System::Text::Encoding::ASCII->GetBytes(textBox1->text);
pin_ptr<Byte> charsPointer = &(chars[0]);
char *nativeCharsPointer = reinterpret_cast<char *>(static_cast<unsigned char *>(charsPointer));
std::string native1(nativeCharsPointer, chars->Length);
label->text=native1;
}

in

{
label1->text=CONVERTTOSTRING(textBox1->text);
}

geändert

1>------ Erstellen gestartet: Projekt: ElektrotechnikUmrechner(J.P.Bachmann), Konfiguration: Release Win32 ------
1>Kompilieren...
1>cl : Befehlszeile warning D9035 : Die Option "Wp64" ist veraltet und wird in einer der nächsten Versionen entfernt.
1>Upload.cpp
1>c:\users\user\documents\visual studio 2008\projects\elektrotechnikumrechner(j.p.bachmann) - kopie\elektrotechnikumrechner(j.p.bachmann)\FF.h(303) : warning C4146: Einem vorzeichenlosen Typ wurde ein unärer Minus-Operator zugewiesen. Das Ergebnis ist weiterhin vorzeichenlos.
1>UpdateProg.cpp
1>c:\users\user\documents\visual studio 2008\projects\elektrotechnikumrechner(j.p.bachmann) - kopie\elektrotechnikumrechner(j.p.bachmann)\FF.h(303) : warning C4146: Einem vorzeichenlosen Typ wurde ein unärer Minus-Operator zugewiesen. Das Ergebnis ist weiterhin vorzeichenlos.
1>UPDATEFUNK.cpp
1>c:\users\user\documents\visual studio 2008\projects\elektrotechnikumrechner(j.p.bachmann) - kopie\elektrotechnikumrechner(j.p.bachmann)\FF.h(303) : warning C4146: Einem vorzeichenlosen Typ wurde ein unärer Minus-Operator zugewiesen. Das Ergebnis ist weiterhin vorzeichenlos.
1>Regtieren.cpp
1>c:\users\user\documents\visual studio 2008\projects\elektrotechnikumrechner(j.p.bachmann) - kopie\elektrotechnikumrechner(j.p.bachmann)\FF.h(303) : warning C4146: Einem vorzeichenlosen Typ wurde ein unärer Minus-Operator zugewiesen. Das Ergebnis ist weiterhin vorzeichenlos.
1>InfoForm.cpp
1>c:\users\user\documents\visual studio 2008\projects\elektrotechnikumrechner(j.p.bachmann) - kopie\elektrotechnikumrechner(j.p.bachmann)\FF.h(303) : warning C4146: Einem vorzeichenlosen Typ wurde ein unärer Minus-Operator zugewiesen. Das Ergebnis ist weiterhin vorzeichenlos.
1>HilfeForm.cpp
1>c:\users\user\documents\visual studio 2008\projects\elektrotechnikumrechner(j.p.bachmann) - kopie\elektrotechnikumrechner(j.p.bachmann)\FF.h(303) : warning C4146: Einem vorzeichenlosen Typ wurde ein unärer Minus-Operator zugewiesen. Das Ergebnis ist weiterhin vorzeichenlos.
1>Form2.cpp
1>c:\users\user\documents\visual studio 2008\projects\elektrotechnikumrechner(j.p.bachmann) - kopie\elektrotechnikumrechner(j.p.bachmann)\FF.h(303) : warning C4146: Einem vorzeichenlosen Typ wurde ein unärer Minus-Operator zugewiesen. Das Ergebnis ist weiterhin vorzeichenlos.
1>FF.cpp
1>c:\users\user\documents\visual studio 2008\projects\elektrotechnikumrechner(j.p.bachmann) - kopie\elektrotechnikumrechner(j.p.bachmann)\FF.h(303) : warning C4146: Einem vorzeichenlosen Typ wurde ein unärer Minus-Operator zugewiesen. Das Ergebnis ist weiterhin vorzeichenlos.
1>ElektrotechnikUmrechner(J.P.Bachmann).cpp
1>c:\users\user\documents\visual studio 2008\projects\elektrotechnikumrechner(j.p.bachmann) - kopie\elektrotechnikumrechner(j.p.bachmann)\FF.h(303) : warning C4146: Einem vorzeichenlosen Typ wurde ein unärer Minus-Operator zugewiesen. Das Ergebnis ist weiterhin vorzeichenlos.
1>ChangeLog1.cpp
1>c:\users\user\documents\visual studio 2008\projects\elektrotechnikumrechner(j.p.bachmann) - kopie\elektrotechnikumrechner(j.p.bachmann)\FF.h(303) : warning C4146: Einem vorzeichenlosen Typ wurde ein unärer Minus-Operator zugewiesen. Das Ergebnis ist weiterhin vorzeichenlos.
1>Verknüpfen...
1>ElektrotechnikUmrechner(J.P.Bachmann).obj : error LNK2005: "bool __clrcall ISDIG(class System::String ^)" (?ISDIG@@$$FYM_NP$AAVString@System@@@Z) ist bereits in ChangeLog1.obj definiert.
1>ElektrotechnikUmrechner(J.P.Bachmann).obj : error LNK2005: "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __clrcall CONVERTTOSTRING(class System::String ^)" (?CONVERTTOSTRING@@$$FYM?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@P$AAVString@System@@@Z) ist bereits in ChangeLog1.obj definiert.
1>FF.obj : error LNK2005: "bool __clrcall ISDIG(class System::String ^)" (?ISDIG@@$$FYM_NP$AAVString@System@@@Z) ist bereits in ChangeLog1.obj definiert.
1>FF.obj : error LNK2005: "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __clrcall CONVERTTOSTRING(class System::String ^)" (?CONVERTTOSTRING@@$$FYM?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@P$AAVString@System@@@Z) ist bereits in ChangeLog1.obj definiert.
1>Form2.obj : error LNK2005: "bool __clrcall ISDIG(class System::String ^)" (?ISDIG@@$$FYM_NP$AAVString@System@@@Z) ist bereits in ChangeLog1.obj definiert.
1>Form2.obj : error LNK2005: "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __clrcall CONVERTTOSTRING(class System::String ^)" (?CONVERTTOSTRING@@$$FYM?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@P$AAVString@System@@@Z) ist bereits in ChangeLog1.obj definiert.
1>HilfeForm.obj : error LNK2005: "bool __clrcall ISDIG(class System::String ^)" (?ISDIG@@$$FYM_NP$AAVString@System@@@Z) ist bereits in ChangeLog1.obj definiert.
1>HilfeForm.obj : error LNK2005: "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __clrcall CONVERTTOSTRING(class System::String ^)" (?CONVERTTOSTRING@@$$FYM?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@P$AAVString@System@@@Z) ist bereits in ChangeLog1.obj definiert.
1>InfoForm.obj : error LNK2005: "bool __clrcall ISDIG(class System::String ^)" (?ISDIG@@$$FYM_NP$AAVString@System@@@Z) ist bereits in ChangeLog1.obj definiert.
1>InfoForm.obj : error LNK2005: "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __clrcall CONVERTTOSTRING(class System::String ^)" (?CONVERTTOSTRING@@$$FYM?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@P$AAVString@System@@@Z) ist bereits in ChangeLog1.obj definiert.
1>Regtieren.obj : error LNK2005: "bool __clrcall ISDIG(class System::String ^)" (?ISDIG@@$$FYM_NP$AAVString@System@@@Z) ist bereits in ChangeLog1.obj definiert.
1>Regtieren.obj : error LNK2005: "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __clrcall CONVERTTOSTRING(class System::String ^)" (?CONVERTTOSTRING@@$$FYM?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@P$AAVString@System@@@Z) ist bereits in ChangeLog1.obj definiert.
1>UPDATEFUNK.obj : error LNK2005: "bool __clrcall ISDIG(class System::String ^)" (?ISDIG@@$$FYM_NP$AAVString@System@@@Z) ist bereits in ChangeLog1.obj definiert.
1>UPDATEFUNK.obj : error LNK2005: "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __clrcall CONVERTTOSTRING(class System::String ^)" (?CONVERTTOSTRING@@$$FYM?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@P$AAVString@System@@@Z) ist bereits in ChangeLog1.obj definiert.
1>UpdateProg.obj : error LNK2005: "bool __clrcall ISDIG(class System::String ^)" (?ISDIG@@$$FYM_NP$AAVString@System@@@Z) ist bereits in ChangeLog1.obj definiert.
1>UpdateProg.obj : error LNK2005: "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __clrcall CONVERTTOSTRING(class System::String ^)" (?CONVERTTOSTRING@@$$FYM?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@P$AAVString@System@@@Z) ist bereits in ChangeLog1.obj definiert.
1>Upload.obj : error LNK2005: "bool __clrcall ISDIG(class System::String ^)" (?ISDIG@@$$FYM_NP$AAVString@System@@@Z) ist bereits in ChangeLog1.obj definiert.
1>Upload.obj : error LNK2005: "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __clrcall CONVERTTOSTRING(class System::String ^)" (?CONVERTTOSTRING@@$$FYM?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@P$AAVString@System@@@Z) ist bereits in ChangeLog1.obj definiert.
1>C:\Users\user\Documents\Visual Studio 2008\Projects\ElektrotechnikUmrechner(J.P.Bachmann) - kopie\Release\ElektrotechnikUmrechner(J.P.Bachmann).exe : fatal error LNK1169: Mindestens ein mehrfach definiertes Symbol gefunden.
1>Das Buildprotokoll wurde unter "file://c:\Users\user\Documents\Visual Studio 2008\Projects\ElektrotechnikUmrechner(J.P.Bachmann) - kopie\ElektrotechnikUmrechner(J.P.Bachmann)\Release\BuildLog.htm" gespeichert.
1>ElektrotechnikUmrechner(J.P.Bachmann) - 19 Fehler, 11 Warnung(en)
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
Lösung schreiben
  • Hallo. Hab mir dein Problem nicht genauer angesehen, da du offensichtlich schon eine Lösung hast. Aber wieso verwendet du nicht Marshal::StringToHGlobalAnsi um deinen managed String in einen std::string umzuwandeln? http://msdn.microsoft.com/de-de/library/system.runtime.interopser...

    nubli2011 235vor 5 Jahren
  • weil ich wenn ich das versuche immer die meldung bekomme das die Marshal header datei nicht da ist, deswegen musste ich mich halt selber drum kümmern und ne eigene Funktion schreiben.

    Thread ErstellerVenson 225vor 5 Jahren
  • Dafür solltest du keine Header-Datei benötigen. Die Klasse liegt aber im Namespace System.Runtime.InteropServices, den du hinzufügen (mit using namespace) oder voll angeben (System.Runtime.InteropServices::Marshal::StringToHGlobalAnsi) musst. Sonst kann ich mir eigentlich kein Problem vorstellen. Welchen Fehler bekommst du denn genau?

    nubli2011 235vor 5 Jahren
  • kann ich dir heute nicht genau sagen bin nicht @ home. werde ich bald posten, aber ich habe mich bereits mit der Class beschäftigt und es sind nur fehler endstanden, also hab ich rasch zu der lösung gekommen.

    Thread ErstellerVenson 225vor 5 Jahren
  • Testest du mit ISDIG ob es sich um eine Zahl handelt? Dafür könntest du auch Int32::TryParse verwenden

    nubli2011 235vor 5 Jahren
  • 13 weitere Kommentare anzeigen

Venson

Reputation

225

  • Thread ErstellerThread Ersteller
  • 316 Beiträge
  • registriert vor 9 Jahren
+1

Akzeptierte LösungAkzeptierte Lösung

Fehler Behoben. Fehler war Folgender:

class CON
{
public:
static std::string CTS( String^ EINGA )
{
array<Byte> ^chars = System::Text::Encoding::ASCII->GetBytes(EINGA);
pin_ptr<Byte> charsPointer = &(chars[0]);
char *nativeCharsPointer = reinterpret_cast<char *>(static_cast<unsigned char *>(charsPointer));
std::string native1(nativeCharsPointer, chars->Length);
return native1;
}
public:
static bool ISDIG( String^ INPUTSB )
{
array<Byte> ^chars = System::Text::Encoding::ASCII->GetBytes(INPUTSB);
pin_ptr<Byte> charsPointer = &(chars[0]);
char *nativeCharsPointer = reinterpret_cast<char *>(static_cast<unsigned char *>(charsPointer));
std::string native2(nativeCharsPointer, chars->Length);
bool digit1 = native2.find_first_not_of("-0123456789,") == std::string::npos;
return digit1;
}
};

So muss der COde zum Umwandeln lauten, fehler war einfach das die Funktion nicht einfach so im Code Faul rumliegen darf sonden in einer Classe sein muss.

Ps. Aufruf sieht dann so aus:

label1->text=CON::CTS(textBox1->text);
Venson

Reputation

225

  • Thread ErstellerThread Ersteller
  • 316 Beiträge
  • registriert vor 9 Jahren
StartseiteLösung schreiben

1 - 2 von 2

Gehe zur Seite

Seite 1 von 1