首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从Haxe创建iOS&OSX库并在本机应用程序中使用?

如何从Haxe创建iOS&OSX库并在本机应用程序中使用?
EN

Stack Overflow用户
提问于 2014-12-07 14:31:21
回答 1查看 1.8K关注 0票数 7

我有一个跨平台的实现自己的协议,数据结构和逻辑写在哈克斯.如何在iOS和OSX的企业级应用程序(带有本地UI)中构建和使用它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-07 14:31:21

如何从Haxe创建iOS- /OSX库并在本机应用程序中使用

现状: 12.2014;HXCPP.:3.1.39~git. 依赖关系:hxcpp

1. Haxe ->库

使用名为HxModule的主类创建一个新的Haxe。

src/HxModule.hx

代码语言:javascript
复制
class HxModule
{
    public static function main()
    {
        Sys.println('Hello from HxModule: "${test()}"');
    }

    @:headerCode
    public static function test():Int
    {
        return 101;
    }
}

build.hxml

代码语言:javascript
复制
-main HxModule
-cp src

-lib hxcpp

# this is for Mac OS X:
-D HXCPP_M64

# this is required on Windows. the "d" stands for debug:
#-D ABI=-MTd
--each

# at this phase we create a binary for tests
-cpp out/cpp/module


--next
# at this phase we create a binary for tests
-cpp out/cpp/module

-D static_link
-D actuate

构建:$ haxe buid.hxml

2. Xcode-项目<-库

  1. 创建一个新的Xcode-项目。它可以用于OSX或iOS、应用程序或Cocoa。
  2. 在“项目”/“构建设置”/“头搜索路径”中,向依赖项添加路径:(所有路径必须为full/not-relative递归)
    1. out/cpp/module/include -你必须把它修正成完整的路径;
    2. {your-haxelib-repo}/hxcpp/{version}/include -{这里-你的};
    3. /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include

  3. 在“Project”/“Build”/“AppleLLVM6.0-LLVM6.0- Language -C++”更改值中:
    • 'C++语言方言‘= GNU++11 [-std=gnu++11]
    • 'C++标准库‘= libstdc++ (GNU C++ standard library)

  4. 在“项目”/“构建阶段”/“用库链接二进制文件”中:
    • HxModule.a

  5. 重命名文件:AppDelegate.m -> AppDelegate.mm
  6. 编辑AppDelegate.mm

AppDelegate.mm

代码语言:javascript
复制
#import "AppDelegate.h"
#import "HxModule.h"

@implementation AppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    NSLog(@"test: %d", ((int)HxModule_obj::test()));
}
@end

此外,对于自动完成和更好的导航,您可以将目录中的引用组添加到Xcode-project中:

  • Haxe产量的include
  • include从哈克斯利布hxcpp.

可能出现的问题:

在写这篇文章的时候,只有一个可能的问题。它可以通过编辑文件{haxelib:hxcpp}/include/hxcpp.h来解决。只需在文件开头添加几行:

{haxelib:hxcpp}/include/hxcpp.h

代码语言:javascript
复制
#ifndef HXCPP_H
#define HXCPP_H

// Standard headers ....

// Custom override by @suhinini
#define Class HxcppClass

// Basic mapping from haxe -> c++

typedef int Int;
typedef bool Bool;


// Windows hack
#define NOMINMAX


#ifdef _MSC_VER
   #include <typeinfo.h>
   namespace hx { typedef ::type_info type_info; }
...

看看// Standard headers ....__。

示例项目

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

https://stackoverflow.com/questions/27343675

复制
相关文章

相似问题

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