1. ホーム
  2. c++

このアプリケーションは、c++でプログラムを実行する際に「Runtime...in an unusual way」を要求しています。.in an unusual way" と表示されます。

2022-02-17 19:20:17
<パス

[問題点

c freeを使ってC++を書いたところ、1つ目はファイル操作時にios::noCreateが使われなくなったことがわかり、2つ目は以下のプログラムを
次のようなプロンプトが表示されます。 このアプリケーションは、通常とは異なる方法でランタイムを終了するよう要求しています。

コードは以下の通りです。

// Random access to binary data files

#include

using namespace std;
struct student{ //define Student structure
   int num;
   char name[5];
   float score; 
};

int main(){

    struct student stud[5]={ //initialize the basic information of five students
        {
1001,"Li",85}
        {
1002,"Fun",97.5},
        {
1003,"Wang",54},
        {
1006,"Tan",76.5},
        {
1010,"Ling",96}
    };

    fstream iofile("stu.dat",ios::in|ios::out|ios::binary);
    // use the fstream class to define the input and output binary file stream object iofile
    if(!iofile){
        cerr<<"open error!"<<<endl;
        abort();
    } 
    for(int i=0;i<5;i++){ //output to disk file for 5 students 
        iofile.write((char *)&stu[i],sizeof(stu[i])); 
    }
    struct student stud1[5];
    for(int i=0;i<5;i=i+1){
        iofile.seekg(i*sizeof(stud[i]),ios::beg);//positioned at the beginning of the 0,2,4 students data
        iofile.read((char *)&stu1[i/2],sizeof(stu1[0]));
        // read the data of three students one after another and store them in stu1[0],stu1[1],stu1[2]
        cout<<stud1[i/2].num<<" "<<<stud1[i/2].name<<" "<<<stud1[i/2].score<<endl;
        } 
    cout<<endl;
    stud[2].num=1012;
    strcpy(stud[2].name,"Wu");
    stud[2].score=60;
    iofile.seekp(2*sizeof(stud[0]),ios::beg); //positioned at the beginning of the third student data 
    iofile.write((char *)&stu[2],sizeof(stu[2])); //update the third student's data 
    iofile.seekg(0,ios::beg);

    for(int i=0;i<5;i++){
        iofile.read((char *)&stu[i],sizeof(stu[i]));
        cout<<<stu1[i/2].num<<" "<<<<stu1[i/2].name<<" "<<<stu1[i/2].score<<endl;
    } 
    iofile.close(); 
    return 0;
}



[ヘルプ】をご覧ください。]

ネットでBaiduの後に以下のようなアプローチが提供されているのを発見しました。

<ブロッククオート

1. コマンドラインcmdに移動します
2、ディレクトリをWindowsのsystem32に切り替える(例:cd c:\WindowsSystem32)
3. Regsvr32 Msxml3.dll を実行する。

上記の手順でやってみたところ、使い道がないことが判明しました。Sading〜。

その後、別の方法を見つけました。
ソフトをダウンロードする 依存性ウォーカー 2.2 をクリックし、解凍して実行します。 depends.exe で、確認したい.exeファイル(私は上のコードから生成した実行ファイルをインポートしました)を開くと、エラーについて書かれた赤いメッセージが表示されます。

実際には多くの .dll ファイルが欠落していますが、これらはすべてスクリプトハウスにあり、System32 フォルダに置くだけでよいのです。


なぜこれらのライブラリファイルが見つからないのか本当に理解できないので、どなたか教えていただけると幸いです。