3

あなたはリンカーエラー*皮肉*を愛するようになりました。とにかく、私はpspsdkに付属しているアレグロのpspポートを使用してpspゲームを開発しています。そして、他のすべての未定義の参照を修正した後、これは私を困惑させます。以下の完全なエラーメッセージとmakefileおよびコード:

エラーの詳細

1>------ Build started: Project: PSP Pong, Configuration: Debug Win32 ------
1>  psp-g++ -I. -IC:/pspsdk/psp/sdk/include -O2 -G0 -Wall -I. -IC:/pspsdk/psp/sdk/include -O2 -G0 -Wall -fno-exceptions -fno-rtti -D_PSP_FW_VERSION=150   -c -o main.o main.cpp
1>  psp-gcc -I. -IC:/pspsdk/psp/sdk/include -O2 -G0 -Wall -D_PSP_FW_VERSION=150  -L. -LC:/pspsdk/psp/sdk/lib   main.o -lalleg -lpspgu -lpspirkeyb -lm -lpsppower -lpspaudio -lpsprtc  -lpspdebug -lpspdisplay -lpspge -lpspctrl -lpspsdk -lc -lpspnet -lpspnet_inet -lpspnet_apctl -lpspnet_resolver -lpsputility -lpspuser -lpspkernel -o main.elf
1>  c:/pspsdk/bin/../lib/gcc/psp/4.3.5/../../../../psp/lib/crt0.o: In function `_main':
1>  ../../../../pspsdk/src/startup/crt0.c (86) : undefined reference to `main'
1>  C:\pspsdk\bin\make: *** [main.elf] Error 1
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========

MakeFile

TARGET = main
OBJS = main.o

CFLAGS = -O2 -G0 -Wall
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
ASFLAGS = $(CFLAGS)

EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = PSP Pong
LIBS = -lalleg -lpspgu -lpspirkeyb -lm -lpsppower -lpspaudio -lpsprtc 
PSPSDK=$(shell psp-config --pspsdk-path)
include $(PSPSDK)/lib/build.mak

main.cpp

#include <allegro.h>
int main()
{

    allegro_init();
    install_mouse();

    set_color_depth(32);
    set_gfx_mode(GFX_AUTODETECT,480,272,0,0);

    clear_bitmap(screen);
    while (!(mouse_b & 2))
    {
        poll_mouse();
        putpixel(screen,mouse_x,mouse_y,0xFFFFFFFF);
        vsync();
    }
    clear_bitmap(screen);

    return 0;
}
END_OF_MAIN();

PSリンカーは、main.cppのメイン関数ではなく、他のメイン関数について話していると思いますが、手がかりがないので、アドバイス、修正、これを解決するのに役立つことがあれば幸いです。

4

3 に答える 3

5

インクルードする直前にallegro、次の定義を追加してみてください。

#define ALLEGRO_NO_MAGIC_MAIN

ソース:

http://allegro-psp.webcindario.com/

于 2011-12-17T00:13:15.417 に答える
2

crt0.cのソースを確認してください。END_OF_MAIN()が行う名前マングリング「magic」のために表示できないmainの定義があります。

http://www.jbox.dk/sanos/source/lib/crt0.c.html

入れてみてください

物事の開始時に#defineALLEGRO_NO_MAGIC_MAIN。

于 2011-12-17T00:17:23.770 に答える
1

main関数定義を次のように変更してみてください。

extern "C"
int main(int argc, char * argv[])

それが物事に役立つかどうかを確認してください。

于 2011-12-17T00:10:48.787 に答える