0

宣言のあるユニット(WebFunctions.h)があります

String RawURLAllowedChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ~.-_";

このユニットはアプリでうまく機能します。しかし、 も宣言するコンポーネントを追加するとWebFunctions.h、 の初期化はRawURLAllowedChars行われません ( RawURLAllowedChars = NULL)。

アプリを正常に動作させるには、コンポーネントのクラス宣言を削除し、WebFunctions.objファイルを削除する必要があります。

注:.cppファイル内の宣言の有無にかかわらず、ファイル内のextern宣言.hも機能しません。

これは XE2 のバグですか、何か不足していますか? ありがとう。

Obs.: 内部の Var 宣言#ifndef .. #endif

4

2 に答える 2

0

これは実際の解決策というよりも回避策ですが...

(メイン アプリの .cpp ファイルで) #pragma link "Component"の行をコメントし、WebFunctions.h (初期化ユニットではない) を使用するコンポーネントを追加します。

Debug\Win32 フォルダー内のすべてのビルド ファイルを削除します。

アプリを再コンパイルします。

于 2013-04-19T19:29:10.313 に答える
0

ヘッダー ファイルでグローバル変数を初期化しないでください。変数をextern.h ファイルのように宣言し、対応する .cpp ファイルで初期化します。例:

WebFunctions.h:

extern const String RawURLAllowedChars;

WebFunctions.cpp:

const String RawURLAllowedChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ~.-_";
于 2013-04-19T05:20:53.890 に答える