首页 > 解决方案 > 导入我的开发 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;
    }
}

标签: haxe

解决方案


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

src/shader/Shader.hx:3:字符 8-20:找不到类型:gfx.Vector2f

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


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

src/gfx/Vector.hx:3:字符 1-7:意外公开

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

src/gfx/Vector.hx:6:字符 5-13:意外的 Vector2f

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


推荐阅读