导入我的开发 haxelib 时无法解析符号

Unable to resolve symbols when importing my development haxelib

我收到错误 src/shader/Shader.hx:3: characters 7-19 : Type not found : gfx.Vector2f

build.hxml:

-cp src
-lib cc_gfx
-main shader.Shader
-lua out/main.lua

haxelib.json:

{
  "name": "cc_gfx",
  "license": "MIT",
  "description": "Bindings to the gfx library for ComputerCraft.",
  "version": "0.0.1",
  "classPath": "src",
  "releasenote": "Initial release.",
  "contributors": ["James King"]
}

Shader.hx:

package shader;

import gfx.Vector2f;

class Shader {
    static public function main() {
        var v = new Vector2f(1, 1);
    }
}

Vector.hx:

package gfx;

public class Vector2f {
    var x : Float;
    var y : Float;

    Vector2f(x : Float, y : Float) {
        this.x = x;
        this.y = y;
    }
}

这实际上与 Haxelib 中的文件无关。

src/shader/Shader.hx:3: characters 8-20 : Type not found : gfx.Vector2f

import gfx.Vector2f; 试图导入一个不存在的 module,它实际上被命名为 Vector(因为文件名为 Vector.hx)。模块名称没有来匹配class名称,但导入需要调整为import gfx.Vector;。或者只是将文件名更改为 Vector2f.hx.


修复后,编译器会报两个错误,因为Vector中的代码有一些语法问题:

src/gfx/Vector.hx:3: characters 1-7 : Unexpected public

Haxe 中的类型默认为 public,因此不允许使用 public 修饰符。之后:

src/gfx/Vector.hx:6: characters 5-13 : Unexpected Vector2f

这不是您在 Haxe 中声明构造函数的方式。 Vector2f(x:Float, y:Float) 应替换为 public function new(x:Float, y:Float)