- 我在我的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完全被忽略了。任何人有任何提示???
答案 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。
谢谢大家的帮助。