Neko Dlls在Haxe C的目标
作者:互联网
我正在尝试使用Neko dll(用C语言编写)和Haxe的C目标.我能够在haxe中调用函数但不能传递值.
这是C代码 –
value Hello(value h)
{
cout << val_int(h);
return val_int(1);
}DEFINE_PRIM(Hello, 1);
这是Haxe代码 –
class Main
{
var load = cpp.Lib.loadLazy( "ndll" , "Hello", 1 );
static function main()
{
load(1);
}
}
仅当函数不接受参数时才执行.此外,从C函数返回到Haxe的值为null.
当我编译neko目标时,这段代码实际上工作得很好,但它似乎不适用于cpp目标.
任何帮助表示赞赏.
解决方法:
为了使其工作,您必须添加到cpp文件的标题:
#define IMPLEMENT_API
#include <hx/CFFI.h>
(而不是neko的标题)
如果你想让ndll同时在neko和hxcpp上运行,你也应该添加
#define NEKO_COMPATIBLE
在hx / CFFI.h之前包括.
您可以使用最适合您的方法进行编译,但我建议使用Build.xml生成您的ndll,因为它会自动为hxcpp的标头添加include和lib路径.您可以在此处看到一个非常简单的Build.xml示例:
http://pastebin.com/X9rFraYp
您可以在此处查看有关hxcpp的CFFI的更多文档:http://haxe.org/doc/cpp/ffi