我试图将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的 header 正确添加include和lib路径。您可以在此处看到一个非常简单的Build.xml的示例:
http://pastebin.com/X9rFraYp
您可以在此处查看有关hxcpp的CFFI的更多文档:http://haxe.org/doc/cpp/ffi