1

誰かがくれた C++ コードを実行しようとしています。最初はファイルへのリンクが壊れていましたがistream、インクルード パスを追加して修正しました。

C:\Program Files (x86)\Embarcadero\RAD Studio\7.0\include\dinkumware

コードはコンパイルされますが、次のようなブレークポイントで停止しませんformcreate

// Initialise the form and read in the module and inverter names.
void __fastcall TMain::FormCreate(TObject *Sender)
{
    ifstream inits;
    ifstream inverters;
    ifstream modules;
    char line[1000];
    AnsiString FTO;
    inits.open("PVSM.ini", ios::in);
    if (inits.is_open())
    {
            inits.getline(line,1000);
            AnsiString parmm(line);
            ModDir = parmm.SubString(1,parmm.Pos(" ")-1);
            inits.getline(line,1000);
            AnsiString parmi(line);
            InvDir = parmi.SubString(1,parmi.Pos(" ")-1);
            inits.getline(line,1000);
            AnsiString parmt(line);
            MetDir = parmt.SubString(1,parmt.Pos(" ")-1);
            inits.getline(line,1000);
            AnsiString parms(line);
            ShdDir = parms.SubString(1,parms.Pos(" ")-1);
            inits.getline(line,1000);
            AnsiString parmx(line);
            ExpDir = parmx.SubString(1,parmx.Pos(" ")-1);
    }
    else    // Should never get here, but if ini file missing use defaults
    {
        ModDir = "C://";
        InvDir = "C://";
        MetDir = "C://";
        ShdDir = "C://";
    }
    inits.close();
    FTO = InvDir + "inverters.data";
    inverters.open(FTO.c_str(), ios::in);
    if (inverters.is_open())
    {
            while ( inverters.getline(line,1000) )
            {
               AnsiString inverter(line);
               IVBox->Items->Add(inverter);
            }
    }
    inverters.close();
    FTO = ModDir + "modules.data";
    modules.open(FTO.c_str(), ios::in);
    if (modules.is_open())
    {
            while ( modules.getline(line,1000) )
            {
               AnsiString module(line);
               ModBox->Items->Add(module);
            }
    }
    modules.close();
    CMod = 1;
    CStr = 1;
    CCell = 1;
    nStore = 0;
    grid = true;
    pasan = false;
    debug = false;
    calc = false;
    cell = false;
    module = false;
    array1 = false;
    inv = false;
    PV = true;
    Parray = false;
    Pcurve = false;
    LastType = 'X';
    CurrTp = -1;  //* Not currently set
    AllSame = true;
    LdMeteo = false;
    mpp = true;
}

.exe表示されることを除いて、ファイルから実行されたかのようにフォームを開くだけです

MyProject.cbproj (リリース構成) をコンパイルしています...成功

メッセージバーに

リリースからデバッグモードに切り替えてみたり、出力ディレクトリを変更して新しい.objファイルをコンパイルしようとしたりしました。失敗。

を実行Rad studio 2010しています。元々は で書かれていましたがXE5、これは IDE のバージョンではなく、フォルダー構造の問題だと思いますか?

助言がありますか?

4

1 に答える 1

5

あなたに役立つかもしれないし、役に立たないかもしれないいくつかのアイデア(さまざまな情報源から):

  • デバッグ構成を使用していることを確認し、コンパイルだけでなくプロジェクトのビルドを実行してください: デバッグ構成に切り替えて、リリース ビルド後にコンパイルを実行するだけでは十分ではありません
  • Win32(デバッグ)のプロジェクトオプションで、次のオプションが正しい値に設定されていることを確認してください

    • [C++コンパイラ] → [デバッグ] → [デバッグ情報] = True;
    • [C++コンパイラ] → [デバッグ] → [デバッグ行番号情報] = True;
    • [C++ コンパイラ] → [最適化] → [すべての最適化を無効にする] = True;
    • [C++ コンパイラ] → [最適化] → [可能な限り高速なコードを生成] = False;
    • [C++ リンカ] → [完全なデバッグ情報] = True;
    • [Delphi コンパイラ] → [最適化] = False;
    • [Delphi コンパイラ] → [debug .dcus を使用] = True;

    (例: MDI アプリケーションのデフォルト構成テンプレートが間違っている)

  • .pch.#およびファイルをすべて削除し.tds、コンパイラに再作成させます
  • VirtualBox で IDE を実行している場合は、一部のバージョンでブレークポイント (v4.3.x) に問題があることを考慮してください。

{ _asm { int 3 } }最後の手段として、ブレークポイントをシミュレートしてみることができます。

以下もご覧ください。

于 2014-11-20T09:42:10.233 に答える