0

-- 在我的 appdelegate.m 中,我在所有其他默认调用中都有这个: --

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    [self.window makeKeyAndVisible];
    NSLog(@"Launched");
    return YES;
}

-- 我的 main.mm 看起来像这样: --

#import <UIKit/UIKit.h>

#import "AppDelegate.h"
#include <allegro5/allegro.h>
ALLEGRO_DISPLAY *Display;

int main(int argc, char *argv[])
{
    al_init();
    al_set_new_display_option(ALLEGRO_SUPPORTED_ORIENTATIONS,
                           ALLEGRO_DISPLAY_ORIENTATION_LANDSCAPE,ALLEGRO_REQUIRE);
    Display = al_create_display(960, 640);
    printf("%d, %d", al_get_display_width(Display),                
                    al_get_display_height(Display));

    return 0;
}

一旦我在我的项目中包含 allegro.h 和所有必需的库/框架并在 main 中调用 al_init(),程序就会停止打印“已启动”。似乎 AppDelegate 被完全忽略了。有人有任何提示吗???

4

3 回答 3

0

Allegro 程序在源代码级别是跨平台的。因此,您不需要提供 AppDelegate,因为 Allegro 已经这样做了。操作系统事件将转换为您可以跨平台方式响应的 Allegro 事件。

如果您真的需要自己的 AppDelegate,那么您需要编辑 Allegro 的源代码。

于 2013-03-16T16:26:21.677 回答
0

而不是返回 0 你应该设置一个整数返回值:

   int retVal = UIApplicationMain(argc, argv, nil, nil);
   return retVal;

或者

   return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));

这可能会奏效。

于 2013-03-15T16:00:09.587 回答
0

Allegro 5.1 没有设置 rootViewController。我修改了 allegro 源代码来做到这一点,现在一切都可以在 iOS 6.0/6.1 上运行。

我向 ViewController.m 添加了shouldAutorotatesupportedInterfaceOrientations方法,并添加了 window.rootViewController = vc; 在 allegroAppDelegate.m 下的“static void iphone_add_screen(UIScreen *screen)”-方法中。然后我重新编译了快板。

谢谢大家的帮助。

于 2013-03-19T09:15:04.213 回答