解決したいこと
業務でOVHのため,既設装置(BCB5)を新しい言語(Embarcadero C++ Builder 10.2 Tokyo)で既設と同じ表示・動作になるように作り直しています(Win10化)。ソースは同じ警告を出すために,テスト的に作ったアプリです。
その中で,下記1~3と同じ警告が出ました。1~3の警告を削除したいです。警告をダブルクリックすると,Unit2.cppの「AnsiString str;」に移動します。Unit2.cppは,クラスではなく,共通関数です。なぜ,くらすでもないのに「コンストラクタが必要です」や「デストラクタが必要です」と警告が出るのでしょうか?
どなたかご教授お願いいたします。
- 宣言にはグローバルコンストラクタが必要です
- 宣言には終了時のデストラクタが必要です
- 宣言にはグローバルデストラクタが必要です
開発環境
OS:Windows10 64bit
IDE:Embarcadero C++ Builder10.2 Tokyo
ソース
Unit1.cpp
C++
1//--------------------------------------------------------------------------- 2 3#include <vcl.h> 4#pragma hdrstop 5#pragma argsused 6 7#include "Unit1.h" 8#include "Unit2.h" 9//--------------------------------------------------------------------------- 10#pragma package(smart_init) 11#pragma resource "*.dfm" 12TForm1 *Form1; 13//--------------------------------------------------------------------------- 14__fastcall TForm1::TForm1(TComponent* Owner) 15 : TForm(Owner) 16{ 17} 18//--------------------------------------------------------------------------- 19void __fastcall TForm1::Button1Click(TObject *Sender) 20{ 21 showMessage(); 22} 23//---------------------------------------------------------------------------
Unit1.h
C++
1//--------------------------------------------------------------------------- 2 3#ifndef Unit1H 4#define Unit1H 5//--------------------------------------------------------------------------- 6#include <System.Classes.hpp> 7#include <Vcl.Controls.hpp> 8#include <Vcl.StdCtrls.hpp> 9#include <Vcl.Forms.hpp> 10//--------------------------------------------------------------------------- 11class TForm1 : public TForm 12{ 13__published: // IDE で管理されるコンポーネント 14 TEdit *Edit1; 15 TButton *Button1; 16 void __fastcall Button1Click(TObject *Sender); 17private: // ユーザー宣言 18public: // ユーザー宣言 19 __fastcall TForm1(TComponent* Owner); 20}; 21//--------------------------------------------------------------------------- 22extern PACKAGE TForm1 *Form1; 23//--------------------------------------------------------------------------- 24#endif
Unit2.cpp
C++
1//--------------------------------------------------------------------------- 2 3#pragma hdrstop 4#pragma argsused 5 6#include "Unit2.h" 7#include "Unit1.h" 8 9AnsiString str; 10//--------------------------------------------------------------------------- 11void __fastcall showMessage(void) 12{ 13 str = Form1->Edit1->Text; 14 ShowMessage(str); 15} 16//--------------------------------------------------------------------------- 17#pragma package(smart_init)
Unit2.h
C++
1//--------------------------------------------------------------------------- 2 3#ifndef Unit2H 4#define Unit2H 5 6#include <vcl.h> 7//--------------------------------------------------------------------------- 8void __fastcall showMessage(void); 9 10extern AnsiString str; 11//--------------------------------------------------------------------------- 12#endif
あなたの回答
tips
プレビュー