- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我用 erlang 编写了一个 nif
库。我还编写了 load
、upgrade
和 unload
函数。
这是我的代码:
#include "erl_nif.h"
int checksum(char *s)
{
return 123;
}
/////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////
static ERL_NIF_TERM
checksum_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[])
{
return enif_make_int(env, checksum(""));
}
/////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////
static int
load(ErlNifEnv* env, void** priv_data, ERL_NIF_TERM load_info)
{
*priv_data = enif_open_resource_type(env,
NULL,
"cwm_utils_buf",
NULL,
ERL_NIF_RT_CREATE | ERL_NIF_RT_TAKEOVER,
NULL);
return 0;
}
static int
upgrade(ErlNifEnv* env, void** priv_data, void** old_priv_data, ERL_NIF_TERM load_info)
{
*priv_data = enif_open_resource_type(env,
NULL,
"cwm_utils_buf",
NULL,
ERL_NIF_RT_TAKEOVER,
NULL);
return 0;
}
static void
unload(ErlNifEnv* env, void* priv_data)
{
return ;
}
static ErlNifFunc nif_funcs[] = {
{"checksum", 1, checksum_nif}
};
ERL_NIF_INIT(mynif, nif_funcs, &load, NULL, &upgrade, &unload);
在erlang shell中,我加载这个nif
并运行checksum
函数,它返回123
,一切都很好!
之后,我将checksum
的返回值更改为123456
,并使用l(mynif编译并加载
命令。nif
到erlang vm )
问题来了!如果我运行checksum
函数,返回值必须是123445
,但它仍然是123
并且nif
还没有被已升级。
有什么问题吗?我搜索了很多并测试了一些示例和库,例如 jiffy
但没有工作。
最佳答案
尝试:
code:purge(mynif).
code:delete(mynif).
l(mynif).
关于c - Erlang nif不升级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37669145/
在实现 NIF 时,Dialyzer 给了我 Function crc16/1 has no local return 可能是因为我做退出在 .erl 模块中(如官方文档推荐): -module(my
我正在编写一些 Erlang 代码,它基本上从 TCP 连接接受一些二进制数据,然后使用 C nif 解密数据并返回解密的数据。 问题是我似乎无法弄清楚如何修改传入的二进制文件。 这是我正在使用的功能
我会想,如果我所做的只是 1) 加载一个 NIF 库,2) 执行我的 new/0 方法,3) 通过 F() 释放一切,然后 4) erlang:garbage:collect()我会回到内存的起点。事
我正在尝试为简单的线性代数实现 NIF。这是我的矩阵内部结构: typedef struct la_matrix { uint rows, columns; double **data; }
我创建了一个 DLL“Addition.dll”,我在其中实现了 hello 函数这些是我用于创建库的文件: main.cpp : #include "main.h" //Hello function
我正在试验 NIF,但我对 Erlang 使用的数字类型感到困惑,因为我对自己的精确度感到有些奇怪。 这是一个例子: erlang:band(18446744073709551614, 5) == 4
我对 Erlang NIF 中的线程有一个小问题。您可以在这里查看我的代码:http://pastebin.com/HMCj24Jp .问题是,当我启动线程时,它需要一些参数并启动 generate_
我有一个通过串行端口实现特殊协议(protocol)的 C++ 代码。代码是多线程的,内部轮询串口并做自己的循环处理。我想从 erlang 调用这个驱动程序并接收来自这个驱动程序的事件。我担心的是这个
我有点困惑,当我创建一个脏 NIF(例如,通过在其 ErlNifFunc 条目中为脏 NIF 设置适当的标志值)时,这会创建一个在脏线程上运行的脏调度程序。 我知道我只能有 N 个 cpu-bond
如果我自己编写 escript,我可以使用 nif,但是当我使用 rebar escriptize 时,找不到 nif 函数。我认为这是因为 *.so 对象没有像 Beam 文件那样被打包。这是一个简
NIF 实现可以使用常规 C/C++ 线程锁定原语还是必须使用 NIF API(enif_mutex_lock(..)、enif_mutex_create(..)、 等) 最佳答案 来自 nif do
我发现Elixir程序可以通过NIFs (native implemented functions)或OS-level ports运行C代码。阅读了这些链接和类似链接后,我不清楚何时使用一种或另一种方
我打算使用 NIF 为我计划在 Erlang 中编写代码的应用程序操作二进制文件。下面给出了 NIF 的 cpp 文件和 erl 文件的要点链接。 [Erl 要点链接] https://gist.gi
是否可以从 NIF 调用 Erlang 函数(回调函数)? 我阅读了文档(http://www.erlang.org/doc/man/erl_nif.html),但没有找到如何做到这一点。 最佳答案
我观察到 C NIF 在被许多 Erlang 进程同时调用时的阻塞行为。可以做成非阻塞的吗?这里有我无法理解的互斥锁吗? 附言在特定的 PID 调用它的情况下,可以通过使其 sleep 一百个微秒来测
在编写 Erlang C NIF 时,如何将用 C 创建的指针(比如说数组)返回到 Erlang,以便稍后在另一个 NIF 调用中由同一 Erlang 进程使用? #define LENGTH =
我尝试使用 cygwin gcc 在 Windows 上编译一个 erlang nif 插件。它编译正常,但链接器出现一些错误: 对 `_enif_get_int' 的 undefined refer
我在尝试将我的共享库(erlang nif)链接到另一个使用 dlopen 加载其他共享库(插件)的共享库(libpurple)时遇到问题。 问题是 mylib.so 链接到 libpurple.so
当 Erlang VM beam 运行一些用 C 编写的代码时,其他用 Erlang 编写的进程没有被调度。例如: static ERL_NIF_TERM nifsleep(ErlNi
我正在使用 NIF 进行 C-Erlang 集成,但在初始化 Binary 时遇到了一些问题并添加 char*指向它的数据。 我是这样做的: ErlNifBinary *output_binary;
我是一名优秀的程序员,十分优秀!