使用pybind11

时间:2018-09-28 20:05:41

标签: python c++ g++ pybind11

我正在尝试编译从pybind11直接复制和粘贴的基本示例,在Mac上是g++-8

这是c ++代码(example.cpp):

#include <pybind11/pybind11.h>

int add(int i, int j) {
    return i + j;
}

PYBIND11_MODULE(example, m) {
    m.doc() = "pybind11 example plugin"; // optional module docstring

    m.def("add", &add, "A function which adds two numbers");
}

当我使用以下命令时,它会起作用:

/usr/local/bin/g++-8 -O3 -Wall -shared -std=c++11 -fPIC -Wl,-undefined,dynamic_lookup `python3 -m pybind11 --includes` example.cpp -o example`python3-config --extension-suffix`

但是,当我添加-mcmodel=large时,如下所示

/usr/local/bin/g++-8 -Wall -shared -std=c++11 -mcmodel=large -fPIC -Wl,-undefined,dynamic_lookup `python3 -m pybind11 --includes` example.cpp -o example`python3-config --extension-suffix`

这会给我带来一系列错误,例如:

  

/var/folders/zk/zxm107qd503bgh5qxvdhv6cr0000gv/T//ccbv0Hje.s:75886:19:   错误:无效的变体“ PLTOFF”           movabsq $ __ ZdlPv @ PLTOFF,%rax

我已经用Google搜索了此错误,但是找不到有用的主题。另外,我想使用g++(不是Xcode),因为它很轻便并且在我的社区中很流行。我尝试使用g++的不同版本(6、7和8),但是看到相同的错误。

我需要使用mcmodel=large,因为我处理的实际代码可能需要大量的内存分配。

任何帮助将不胜感激。

0 个答案:

没有答案