AppDelegate未在iOS / Allegro 5上调用

时间:2013-03-15 15:36:59

标签: ios appdelegate uiapplication allegro

- 我在我的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完全被忽略了。任何人有任何提示???

3 个答案:

答案 0 :(得分:0)

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

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

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

这可能有用。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

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

谢谢大家的帮助。