2016-06-12 8 views
2

OmniThreadLibraryをビルダーで実行しようとしましたが、ビルドに必要なすべてのC++必要なファイルをビルドしましたが、ビルドのC++ Builderアプリケーションで使用すると、次OmniThreadLibrary C++ builderビルドの問題

[BCC32エラー] DSiWin32.hpp(385)のように見えるのエラーメッセージが:E2040宣言が生成されたHPPファイル

静的定数システムにこのコード行で誤っ

1ポイントを終了しました: :Int8 CSIDL_ADMINTOOLS = System :: Int8(0x30);

は、誰もがそのことについては、私はC++ Builderの整定とOmniThreadLibraryバージョン3.06

+0

私はこれを問題として提起しました。詳細はリンクを参照してください。https://github.com/gabr42/OmniThreadLibrary/issues/72 – Shaun07776

+0

なぜ投票が停止するのですか?こんにちは、レミー、 – Shaun07776

答えて

3

のWin32 API(とDelphiを使用してい

これらの問題を解決する最良の方法をC++ Builderでこの作業を持っていたか知っています)は既にCSIDL_ADMINTOOLSを宣言しており、オムニはそれをまったく宣言してはいけません。代わりにDelphiのShlobjユニットを使用する必要があります。

のWin32 APIは#define文を使用してCSIDL_ADMINTOOLSを宣言します。

#define CSIDL_ADMINTOOLS 0x0030 

だから、オムニの.hppで宣言がこれにC++プリプロセッサによって変更取得されています。したがって、「宣言が誤って終了

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

"コンパイラエラーです。 DelphiのコードはすでにC++に存在する何かを宣言するとき

、それが重複宣言を避けるために{$EXTERNALSYM}または{$NODECLARE}いずれかとして宣言する必要があり、その後、必要に応じて生成された.hppファイルに出力に関連する#include文を{$HPPEMIT}を使用しています。 Delphiのユニットは、Win32の宣言のためにすでにそうしています。

Omniがまだこれを実行していない場合(エラーではないと示唆している場合)、それに応じて更新する必要があります。

+0

。ありがとう、私はそれを今のところコメントアウトすることによって動作させることができました。彼らはいくつかのように見えるが、私はすべてではないと思う。 – Shaun07776

+0

@ Shaun07776 Omniの著者にバグレポートを提出する必要があります。 –

+0

そうですね。私は彼らがC++ビルダーをサポートするすべてのレポートを考えていないが、うまくいくようだ。私は先にいくつかの他の問題を私はそれらを上げるつもりです。ご協力いただきありがとうございます – Shaun07776