首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对“main”的未定义引用

对“main”的未定义引用
EN

Stack Overflow用户
提问于 2011-12-17 00:03:26
回答 3查看 3.1K关注 0票数 3

你一定要喜欢链接错误*讽刺*。无论如何,我正在开发一个psp游戏使用与pspsdk附带的快板psp端口。在我修正了所有其他未定义的引用之后,这一个就把我甩了。完整的错误消息和makefile以及下面的代码:

错误详细信息

代码语言:javascript
复制
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

代码语言:javascript
复制
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

代码语言:javascript
复制
#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();

我想链接器不是在讨论main.cpp中的主要功能,而是一些其他的主要功能,但是我没有任何线索,所以任何建议、更正、任何帮助我解决这个问题的东西都将不胜感激。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-12-17 00:13:15

在包含allegro之前,尝试添加以下定义:

代码语言:javascript
复制
#define ALLEGRO_NO_MAGIC_MAIN

来源:

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

票数 5
EN

Stack Overflow用户

发布于 2011-12-17 00:17:23

查看crt0.c的源代码,它有一个main的定义,由于END_OF_MAIN()所做的“魔术”名称,所以它看不到这个定义。

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

试试看

#在事情开始时定义ALLEGRO_NO_MAGIC_MAIN。

票数 2
EN

Stack Overflow用户

发布于 2011-12-17 00:10:48

尝试将main函数定义更改为:

代码语言:javascript
复制
extern "C"
int main(int argc, char * argv[])

看看能不能帮上忙。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8541594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档