标签: hxcpp

从iOS应用程序运行Haxe - hxRunLibrary()错误

对于客户,我开发了一个用于用户界面的iOS + Android应用程序Cordova (PhoneGap).现在,作为这个应用程序的更新,我正在尝试添加一个用Haxe编写的游戏.最初这个游戏是为这个游戏编写的Flash target,但是我已经更新了它以便与C++目标一起工作Android and iOS.

在Android上,很容易Cordova使用活动将其与应用程序集成(Haxe部分作为单独的活动运行),但我在iOS上实现类似结果时遇到一些麻烦.

到目前为止,我已经尝试将所有hxcpp生成的代码包含在我的项目中(就像当你执行"nme build ios"时NME设置XCode项目一样),hxRunLibrary()当我希望游戏运行时,我正在调用我的代码.

问题是hxRunLibrary()似乎想要创建自己的UIApplication实例,由于我的主应用程序已经在运行实例,因此失败并出现以下错误:

*** Assertion failure in void UIApplicationInstantiateSingleton(Class)(), /SourceCache/UIKit_Sim/UIKit-2380.17/UIApplication.m:2037
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'There can only be one UIApplication instance.'
Run Code Online (Sandbox Code Playgroud)

我认为这可能与SDL有关,Haxe将其用于图形.根据我的理解,SDL需要从应用程序的主要功能运行,这与Cocoa产生冲突,也需要从main函数运行.

这有什么简单的方法吗?我查看了hxcpp源代码,但无法找到UIApplication相关代码或SDL的任何条目代码.

也许有人可以指出我正确的方向.谢谢!

haxe hxcpp ios nme

38
推荐指数
1
解决办法
792
查看次数

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

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

macos native haxe hxcpp ios

7
推荐指数
1
解决办法
1392
查看次数

什么是cppia脚本?

我只是看看Haxe 3.2.0-rc.2更改日志,并在新功能列表的末尾找到了这个:

cpp : inititial implementation of cppia scripting
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉我这意味着什么?我可以说它与C++有关,但谷歌搜索这与编程/脚本没有任何关系,除非你计算与Haxe相关的结果.

c++ scripting haxe hxcpp

7
推荐指数
2
解决办法
1933
查看次数

无法为Android编译NME

好的,我正在尝试将NME示例文件初始构建到Android设备上.

我可以为HTML5,Flash和Windows等平台构建,但是我无法在Android上进行构建 - 我总是会收到错误说:

Unable to find a javac compiler;
com.sun.tools.javac.Main is not on the classpath.
Perhaps JAVA_HOME does not point to the JDK.
Is is currently set to "C:\Program Files (x86)\Java\jre7"
Run Code Online (Sandbox Code Playgroud)

好的 - 显而易见吧?但我检查,复查,重新启动,编辑环境变量并取得绝对确保JAVA_HOME变量实际上是指向的JDK.

有什么解释吗?

android haxe hxcpp nme

6
推荐指数
1
解决办法
890
查看次数

方法内联时,数组不会更改

这是我的堆栈类的一部分.它在flash中工作正常,但在cpp/windows中,push方法并不总是有效.我不太了解C++,无法理解为什么它可能不一致.

var arr:Array<T>;
public var length(default, null):Int;

public function new() {
    clear();
}

public inline function clear():Void {
    arr = [];
    length = 0;
}

public inline function push(t:T):Void {
    // Log.trace(arr) -> []
    arr[length++] = t;
    // Log.trace(arr) -> []
}
Run Code Online (Sandbox Code Playgroud)

push内联时,类似的东西stack.push(0)并不总是改变数组,就像它的真实长度固定为0(length然而变量确实增加).其他时候,它工作正常.如果我删除inline关键字,它一直正常工作.

内联(替换stack.push(0))时生成的cpp :

::msg::utils::Stack tmp = this->stack;
::msg::utils::Stack _this = tmp;
Array< int > tmp1 = _this->arr;
int tmp2 = (_this->length)++;
tmp1[tmp2] = (int)0;
Run Code Online (Sandbox Code Playgroud)

当没有内联(内部push())时:

Dynamic …
Run Code Online (Sandbox Code Playgroud)

c++ windows arrays haxe hxcpp

6
推荐指数
1
解决办法
145
查看次数

OpenGL与Haxe C++?

我有兴趣将Haxe转换为我的主要编程语言,到目前为止它已经很棒了,但是我的一个要求是我可以将OpenGL 3.3和C++目标一起用于3D游戏工作.

然而,这似乎是一件奇怪的事情,因为我在网上找到关于在Haxe中使用OpenGL的信息很少.我找到了一些库,特别是hx-ogl和foo3d(抽象的类似ogl),但它们都没有维护,我无法让它们工作.我也发现了一些3D引擎,但我想使用纯OpenGL.此外,我只需要针对C++,因此不需要跨平台性.

有没有人成功使用OpenGL与Haxe C++合作?

c++ opengl haxe hxcpp

5
推荐指数
1
解决办法
4460
查看次数

为C库创建Haxe hxcpp包装器

因为几天我试着写一个用于线路编码的Haxe hxcpp包装器,用C代码编程; 该库非常简单,标题还包含一个extern C.我遵循snowkit linc宏模板,但是我无法获得编译C模块的方法,并且它与项目的其余部分链接,我不确定怎么继续

我没有问题将代码编译为C对象并将其与我的系统中的C可执行文件(OSX el Capitan)链接,因此我假设我在haxe项目中做错了,也许我无法真正将hxcpp链接到C库直接使用来自haxe的构建过程,或者我应该通过手动编写命令来手动管道.

@:keep
@:structAccess
@:include('linenoise.h')
#if !display
@:build(linc.Linc.touch())
@:build(linc.Linc.xml('linenoise'))
#end

extern class LineNoise {
 @:native("linenoiseClearScreen")
 static function linenoiseClearScreen(): Void;
} //LineNoise
Run Code Online (Sandbox Code Playgroud)

最近我收到此错误:

g++ -o Test-debug -stdlib=libstdc++ -framework Cocoa -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk -m64 @/Users/vresko/projects/linenoise/test/cpp/obj/darwin64-debug/all_objs 

Undefined symbols for architecture x86_64: 

 "_linenoiseClearScreen", referenced from: 

 Test_obj::main() in ab184b9a_Test.o 

ld: symbol(s) not found for architecture x86_64 

clang: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud)

我知道这个错误有几个提及,但我不知道如何在haxe hxcpp的上下文中解决这个问题.

如果我使用包含hxcpp.h的C++包装器作为典型的linc示例,那么错误仍然是相同的,我在这里声明的函数(linenoiseClearScreen)实际上是一个简单的print语句.

我还读到了其他可能性,例如CFFI为neko创建了一个围绕库的包装器(我可能已经在互联网上阅读了所有关于它的内容)但是我希望尽可能保持代码静态链接并与所有hxcpp目标兼容.

c c++ haxe hxcpp

5
推荐指数
1
解决办法
1143
查看次数

如何获得Haxe的当前时间(以毫秒为单位)?

我需要一个函数来返回CPP目标上的本地时间(以毫秒为单位).

我尝试过Haxe的Date课程,但Date.now()在几秒钟内就给了我时间.

time datetime haxe hxcpp

5
推荐指数
1
解决办法
1708
查看次数

编译Haxe以完全剥离cpp目标?

如何使用完全剥离的cpp目标编译Haxe代码,没有调试插件等?

除了能够使用什么-D dce=full--no-traces编译最快和/或最小的可执行文件?

haxe compiler-optimization hxcpp

5
推荐指数
1
解决办法
188
查看次数

从Haxe传递给C ++的对象中的调用方法

我正在为移动广告SDK创建一个OpenFL扩展程序,但很难弄清一些CFFI内容。

基本上,我试图将Haxe对象传递给C ++,然后从C ++对该对象调用一个方法。这样做的目的是作为事件侦听器,因此当C ++中发生某些事情时,我将在该对象上调用回调以通知Haxe代码。

我知道如何使用lime的用于Android的JNI东西使用Java来做到这一点。使用JNI类型签名看起来像这样:

var setCallbackListener = JNI.createStaticMethod("com.test.myextension", "setCallbackListener", "(Lorg/haxe/lime/HaxeObject;)V");

var listener = new MyCallbackListener(); //implements `onSomething`

setCallbackListener(listener); //pass the listener to the Java side

Run Code Online (Sandbox Code Playgroud)

然后,从Java方面,我可以这样调用函数onSomething

public static void setCallbackListener(HaxeObject listener){
    listener.call0("onSomething"); //call a function called "onSomething" with zero arguments
}
Run Code Online (Sandbox Code Playgroud)

那行得通,这就是我在Android上的做法。对于iOS,我尝试使用hxcpp做相同的事情。

我知道从Haxe调用C ++函数的一般过程,其使用cpp.Lib.load方式与上述JNI api类似。但是,一旦获得valueC ++方面的类型,我就不知道如何调用它的成员函数。

例如,假设我的C ++函数如下所示:

#include <hx/CFFI.h>
static void setCallbackListener (value listener) {
    //...
}
DEFINE_PRIM (setCallbackListener, 1);
Run Code Online (Sandbox Code Playgroud)

然后,我将如何在其中调用函数“ onSomething” listener

haxe hxcpp openfl

4
推荐指数
1
解决办法
139
查看次数

是否有任何算法可以将简单的Haxe代码转换为C/C++代码文件?

我有简单的Haxe应用程序

class Main
{
    public static function main()
    {
        trace("hello world");
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道如何编译这样的应用程序的Windows(不是作为SWF,但作为纯C\C++的应用程序)(你可以看到这里如何,但担心使用hxcpp\0,4)问题是 - 我不想编译适用于Windows Vista或7或XP的应用程序我想获得PURE C\C++代码(在一个地方作为一个项目更好),例如在Windows Mobile上编译代码或我想要的地方.

那么有没有算法将简单的Haxe代码转换为C/C++代码文件?

c c++ haxe hxcpp

2
推荐指数
1
解决办法
333
查看次数

标签 统计

haxe ×11

hxcpp ×11

c++ ×5

c ×2

ios ×2

nme ×2

android ×1

arrays ×1

compiler-optimization ×1

datetime ×1

macos ×1

native ×1

openfl ×1

opengl ×1

scripting ×1

time ×1

windows ×1