| 81 | extern int _hxcpp_argc; |
| 82 | extern char **_hxcpp_argv; |
| 83 | int main(int argc,char **argv) |
| 84 | { |
| 85 | _hxcpp_argc = argc; |
| 86 | _hxcpp_argv = argv; |
| 87 | #endif |
| 88 | HX_TOP_OF_STACK |
| 89 | hx::Boot(); |
| 90 | try |
| 91 | { |
| 92 | __boot_all(); |
| 93 | __hxcpp_main(); |
| 94 | } |
| 95 | catch (Dynamic e) |
| 96 | { |
| 97 | auto customStack = e->__Field(HX_CSTRING("_hx_customStack"), HX_PROP_DYNAMIC).asString(); |
| 98 | if (::hx::IsNotNull(customStack)) |
| 99 | { |
| 100 | printf("%s\n", customStack.utf8_str()); |
| 101 | } |
| 102 | else |
| 103 | { |
| 104 | __hx_dump_stack(); |
| 105 | } |
| 106 | |
| 107 | #ifdef HX_WIN_MAIN |
| 108 | MessageBoxA(0, e == null() ? "null" : e->toString().__CStr(), "Error", 0); |
| 109 | #else |
| 110 | printf("Error : %s\n", e == null() ? "null" : e->toString().__CStr()); |
| 111 | #endif |
| 112 | return -1; |
| 113 | } |
| 114 | return 0; |
| 115 | } |
| 116 | #if 0 |
| 117 | } |
| 118 | } |