2016-06-12 8 views
2

Ich habe versucht, OmniThreadLibrary in Builder auszuführen, ich habe es mit allen C++ erforderlichen Dateien gebaut, die es baut, aber ok, wenn ich es in einer C++ Builder-App verwende, bekomme ich eine Menge Fehlermeldungen, die wie folgt aussehenOmniThreadLibrary C++ Builder Build-Probleme

[bcc32 error] DSiWin32.hpp (385): E2040 Erklärung falsch

man Punkte in dieser Codezeile in der generierten HPP-Datei

static const-System beendet: : Int8 CSIDL_ADMINTOOLS = System :: Int8 (0x30);

hat jemand diese Arbeit in C++ Builder hatte oder wissen, den besten Weg, um diese Probleme zu lösen

Ich bin mit C++ Builder settle und OmniThreadLibrary Version 3.06

+0

Ich habe dies als ein Problem angesprochen siehe Link für Details https://github.com/gabr42/OmniThreadLibrary/issues/72 – Shaun07776

+0

Warum die Abstimmung nach unten? – Shaun07776

Antwort

3

Der Win32-API (und Delphi, was das betrifft) erklärt bereits CSIDL_ADMINTOOLS, Omni sollte es überhaupt nicht deklarieren. Es sollte Delphis Shlobj Einheit stattdessen verwenden.

Die Win32-API erklärt CSIDL_ADMINTOOLS eine #define Anweisung:

#define CSIDL_ADMINTOOLS 0x0030 

die Erklärung in Omni So .hpp wird durch die C++ Präprozessor diese modifizierte bekommen:

static const System::Int8 0x0030 = System::Int8(0x30); 

So ist die „Erklärung beendet falsch "Compilerfehler.

Wenn Delphi-Code etwas erklärt, die in C++ ist bereits vorhanden, muss es entweder als {$EXTERNALSYM} oder {$NODECLARE} deklariert werden doppelte Erklärungen zu vermeiden, und dann gegebenenfalls {$HPPEMIT} zur Ausgabe eines entsprechenden #include Anweisung in einer dynamisch erzeugten .hpp Datei verwenden. Die Einheiten von Delphi machen das bereits für ihre Win32-Deklarationen.

Wenn Omni dies nicht bereits tut (und der Fehler würde darauf hindeuten, dass dies nicht der Fall ist), muss es entsprechend aktualisiert werden.

+0

Hallo Remy. Danke, dass ich es geschafft habe, indem ich sie jetzt kommentiert habe. Es sieht so aus, als hätten sie einige gemacht, aber ich denke nicht alle. – Shaun07776

+0

@ Shaun07776 sollten Sie einen Fehlerbericht mit dem Omni-Autor einreichen. –

+0

Ja werde ich tun. Ich denke nicht, dass sie alle den C++ Builder unterstützen, aber es scheint in Ordnung zu sein. Ich mache ein paar weitere Probleme, danach werde ich diese aufziehen. Danke für Ihre Hilfe – Shaun07776