gpt4 book ai didi

erlang - 打开 C++ 共享库作为 Erlang 端口驱动程序时出错

转载 作者:行者123 更新时间:2023-12-02 20:07:22 25 4
gpt4 key购买 nike

我正在使用 Ubuntu 18:04,并且想要通过动态语言使用这个 C++ 共享库。

共享库可以从这里获得 -

http://www.warmplace.ru/soft/sunvox/sunvox_lib-1.9.4c.zip

这是一个小型嵌入式合成器 - 提取了我正在使用 sunvox_lib/linux/lib_x86/sunvox.so 的 zip 文件,并通过 chmod 755 更改权限。

它可以通过 ctypes 与 Python 3.6 正常工作,所以我认为它没有损坏 -

(sv_demo) justin@justin-XPS-13-9360:~/work/sv_demo$ python
Python 3.6.8 (default, Dec 24 2018, 19:24:27)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from ctypes import cdll
>>> sv.sv_init(0, 44100, 2, 0)
Desired audio buffer size: 2048 frames
ALSA: pulse
ALSA HW Default rate: 44100
ALSA HW Rate: 44100 frames
ALSA HW Buffer size: 4096 frames
ALSA HW Period size: 227
ALSA HW Periods: 0
ALSA SW Avail min: 227
ALSA SW Start threshold: 1
ALSA SW Stop threshold: 4096
67844
>>> sv.sv_deinit()
SOUND: sundog_sound_deinit() begin
SOUND: sundog_sound_deinit() end
Max memory used: 41823
0
>>> exit()
(sv_demo) justin@justin-XPS-13-9360:~/work/sv_demo$

但是我真的想要/需要使用 Erlang,而不是 Python;并希望通过端口驱动程序机制来做到这一点。但是-

(sv_demo) justin@justin-XPS-13-9360:~/work/sv_demo$ erl
Erlang/OTP 20 [erts-9.3] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:10] [hipe] [kernel-poll:false]
Eshell V9.3 (abort with ^G)
1> erl_ddll:load_driver(".", "sunvox.so").
{error,{open_error,-10}}

{open_error, -10} 可能意味着什么?我以前曾使用过端口驱动程序,但没有遇到过这个问题。我用 Google 搜索了一下,但找不到 Python 乐于使用它而 Erlang 不乐于使用的原因。

有什么想法吗?

TIA


更新。

2> erl_ddll:format_error({open_error, -10}).
"cannot open shared object file: No such file or directory"

为什么找不到sunvox.so?它位于我运行 erl 的根目录中 ...

最佳答案

我认为我使用错误的句柄调用共享对象 - 您需要删除 .so 后缀 -

Erlang/OTP 20 [erts-9.3] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:10] [hipe] [kernel-poll:false]

Eshell V9.3 (abort with ^G)
1> erl_ddll:load_driver(".", "sunvox").
{error,no_driver_init}
2> erl_ddll:format_error(no_driver_init).
"No driver init in dynamic library"
3>

回到绘图板:-(

关于erlang - 打开 C++ 共享库作为 Erlang 端口驱动程序时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54371108/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com