0

私はMingw32コンパイラを使用したCの初心者です。現在、IL から C (ネイティブ) への逆コンパイラを作成しています。

生成されたコード (System.Object なし):

DecompileTestApplication_Program.c

#include "DecompileTestApplication_Program.h"
DecompileTestApplication_Program* DecompileTestApplication_Program__ctor( ) {
    if (array__DecompileTestApplication_Program == 0) {
        array__DecompileTestApplication_Program=(void**)malloc(sizeof(void*)*(capacity__DecompileTestApplication_Program=4));
    }
    DecompileTestApplication_Program* this;
    //error: 'this' undeclared (first use in this function)
    if (count__DecompileTestApplication_Program==0) {
        this=(DecompileTestApplication_Program*)malloc(sizeof(DecompileTestApplication_Program));
        goto RealConstructor;
    }
    this=(DecompileTestApplication_Program*)array__DecompileTestApplication_Program[--count__DecompileTestApplication_Program];
    RealConstructor:
    this->ind = 0;
    this->a = 1;
    this->b = 3;
    //this._inherit_object_( ); //this is OOP tests ,still working on it
    return this;
}
void DecompileTestApplication_Program_Main( ) {
    int var_0_02;
    var_0_02 = 0;
    var_0_02 = ( var_0_02 + 1 );
    int var_1_08;
    var_1_08 = 1;
    int var_2_0A;
    var_2_0A = 3;
    var_1_08 = ( var_1_08 + var_2_0A );
    var_0_02 = ( var_0_02 + ( var_1_08 + var_2_0A ) );
    DecompileTestApplication_Program_blat = ( DecompileTestApplication_Program_blat + ++DecompileTestApplication_Program_bpa );
}
void DecompileTestApplication_Program__cctor( ) {
    DecompileTestApplication_Program_blat = 1;
    DecompileTestApplication_Program_bpa = 4;
}

DecompileTestApplication_Program.h

#ifndef DecompileTestApplication_Program
#define DecompileTestApplication_Program
/*
Type's Name: DecompileTestApplication.Program
Time to Parse: 40.0023ms
*/
#include <stdio.h>
typedef struct {
    //Variables
    int ind;
    int a;
    int b;
} DecompileTestApplication_Program;
static int DecompileTestApplication_Program_blat;
static int DecompileTestApplication_Program_bpa;
//Methods
void DecompileTestApplication_Program_Main( );
DecompileTestApplication_Program* DecompileTestApplication_Program__ctor( );
void DecompileTestApplication_Program__cctor( );
static int count__DecompileTestApplication_Program=0;
static int capacity__DecompileTestApplication_Program=0;
static DecompileTestApplication_Program** array__DecompileTestApplication_Program=0;
#endif

@main.h

void main();

@main.cpp

//bookmart for includes
#include "DecompileTestApplication_Program.h"


void main() {
    //bookmark for initialize
    DecompileTestApplication_Program__cctor();
    DecompileTestApplication_Program_Main();
}

最初のファイルで見つかったエラー。このエラーの解決策をしばらく検索しましたが、何も見つかりませんでした。

4

1 に答える 1

8
#define DecompileTestApplication_Program

つまり、単語が表示される場所はどこでもDecompileTestApplication_Program削除されます。そのため、次の宣言を試みましたthis:

DecompileTestApplication_Program* this;

に展開します

* this;

宣言されていない変数を逆参照しようとしますthis。これを修正するには、マクロ名を変更します。

于 2012-07-13T11:48:43.100 に答える