救命,谁来救救我。。。

最近找了一个 MAVLink 的 elixir 库:
https://github.com/beamuav/elixir-mavlink
我用的是 elixir 1.17.3,导入这个库之后,不出意外的报错了。但是有一个很神奇的问题,让不信鬼神的我都想去庙里烧根香了。

由于这个库报的错有点多,于是我下载了源码下来编译。首先是有很多警告,都是由于我的 elixir 版本过高,一些被弃用的语法和函数导致的,找到发出警告的代码,一一改过来就可以了,其实也不是很多。
我们可以看下它的 mix.exs
文件,elixir 的版本还是 1.9。
接下来神奇的事情来了,解决完所有警告以后,始终有一个报错解决不了:
== Compilation error in file lib/mavlink/parser.ex ==
** (ArgumentError) lib file xmerl/include/xmerl.hrl could not be found
(elixir 1.17.3) lib/record/extractor.ex:41: Record.Extractor.from_lib_file/1
(elixir 1.17.3) lib/record/extractor.ex:18: Record.Extractor.from_or_from_lib_file/1
(elixir 1.17.3) lib/record/extractor.ex:5: Record.Extractor.extract/2
lib/mavlink/parser.ex:59: (module)
xmerl/include/xmerl.hrl
是 erlang 的 xml 库的头文件,它在 erlang 安装目录的 lib\xmerl-1.3.31\include
目录下,具体版本号跟你安装的 erlang 的版本有关。打开目录查看,这个文件是寻找的。
为了一探究竟,我们找到报错的文件