TL; DR :与其他任何库一样,在我的项目目录之外,安装了haxelib dev并包含在Project.xml中,Haxe编译器看不到我的库。在我的项目目录中,它工作正常。显然,其他库不必位于我的项目目录中,以避免编译器错误,那么我在这里缺少什么呢?

我正在尝试通过遵循this page释放一些代码作为haxelib。

我本来的包 namespace 为flixel.addons。代码位于source/flixel/addons子目录下的另一个项目中。在我开始之前,该项目是已编译好的一部分。

我决定最好不要在发布时侵入他人的 namespace ,因此我在类文件的mynamespace行上将 namespace 更改为package。我查看了另一个haxelib的构想,发现库名可以与类路径不同,后者可能与包 namespace 相同。因此,我将代码从项目中移出,移至其他位置的新目录中:

mylibraryname
\-Readme.md
\-haxelib.json
\-mynamespace
  \-myclass.hx

按照说明,我使用haxelib dev的路径运行了mylibraryname

在我的项目中,我在Project.xml中添加了<haxelib name="mylibraryname" />。在使用它的地方,我将import行从flixel.addons.myclass更改为mynamespace.myclass

现在,尝试编译我的项目(在FlashDevelop中,使用Haxe 3.2.1)会在使用它的Type not found: mynamespace.myclass行上给出错误import。具有讽刺意味的是,FlashDevelop在光标所在的myclass上按下Ctrl + Shift + 1的同时自动添加了该行。此外,我可以在import行的红色下划线部分按F4,它会从新位置打开myclass.hx

该文件包含:
package mynamespace;
我使用它的项目文件包含:
import mynamespace.myclass;
同时,haxelib.json文件具有:
{
  "name": "mylibraryname",
  "url" : "...",
  "license": "MIT",
  "tags": ["haxe"],
  "description": "...",
  "version": "0.0.1-alpha",
  "classPath": "mynamespace/",
  "releasenote": "...",
  "contributors": ["me"],
  "dependencies": {
    ...
  }
}

我尝试过的事情:
  • 尽管我认为它现在应该可以工作,但我还是尝试了创建zip文件并在其上使用haxelib install的下一步。没变化。
  • 我的项目中还碰巧仍然有一个目录mynamespace,但是我真的不再需要它了,所以我删除了它。没变化。
  • 为了确保没有错别字,我将mylibraryname目录的副本(已正确安装在...\haxe\lib\mylibraryname\0.0.1-alpha中,并制作了一个带有.current0.0.1-alpha文件,顺便说一句)放回到我的项目中。它编译良好。
  • 即使在文档中未提到,我也看到另一个库在haxelib.xmlhaxelib.json的旁边包含一个Type not found文件,其中包含this。无论有没有此文件,都不会更改。 (甚至不完成代码,它可以很好地列出我的类的唯一变量和继承的变量,但是在编译时会在“输出” Pane 中生成完全相同的haxelib selfupdate错误。)
  • haxelib.json。已经是最新的。没变化。
  • Windows重新启动!为什么不?没变化。

  • 我如何才能编译我的项目?为什么在FlashDevelop和haxelib出现时Haxe看不到它,以及在使用第三方haxelibs和文档之后对我的lib的目录结构和haxelib dev进行建模,为什么?

    还是我误解了什么,您必须在项目的上下文中测试haxelib,直到它们正式发布为止?如果是这种情况,我不确定haxelib install mylib.zip和ojit_code步骤到底应该做什么。

    最佳答案

    问题应该是classPath中的haxelib.json指令。

    它的值应该是根/基本软件包中模块的相对搜索路径,而不是软件包的路径。

    尝试将其更改为""或完全省略该指令。

    09-13 13:43