Python调用Rust编译的共享库出现错误,pythonrust,Rust Code:#[


Rust Code:

#[no_mangle]use std::thread;pub extern fn process() {    let handles: Vec<_> = (0..10).map(|_| {        thread::spawn(|| {            let mut _x = 0;            for _ in (0..5_000_001) {                _x += 1            }        })    }).collect();    for h in handles {        h.join().ok().expect("Could not join a thread!");    }}

Cargo.toml:

[package]name = "embed"version = "0.1.0"authors = ["hustlibraco <hustlibraco@gmail.com>"][lib]name = "embed"crate-type = ["dylib"]

编译得到target/release/libembed.so共享库,然后我在此目录下面新建了一个python文件:

from ctypes import cdlllib = cdll.LoadLibrary("target/release/libembed.so")lib.process()print("done!")

执行报错:

-bash-4.2# python invoke.py Traceback (most recent call last):  File "invoke.py", line 5, in <module>    lib.process()  File "/usr/lib64/python2.7/ctypes/__init__.py", line 373, in __getattr__    func = self.__getitem__(name)  File "/usr/lib64/python2.7/ctypes/__init__.py", line 378, in __getitem__    func = self._FuncPtr((name_or_ordinal, self))AttributeError: target/release/libembed.so: undefined symbol: process

这是Rust官方教程给的例子,为什么我这里会执行出错呢?

编橙之家文章,

评论关闭