Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Python—公开一个类_C++_Python_Boost - Fatal编程技术网

C++ Python—公开一个类

C++ Python—公开一个类,c++,python,boost,C++,Python,Boost,我有一个名为“Wav”的类,它存储在另一个目录中,包含文件“Wav.h”和“Wav.cpp”,如下所示: enum ReadType { NATIVE = 0, DOUBLE, }; namespace AudioLib { class Wav : public Signal { public: Wav(); Wav(const int M, const int N); ///...

我有一个名为“Wav”的类,它存储在另一个目录中,包含文件“Wav.h”和“Wav.cpp”,如下所示:

enum ReadType {
   NATIVE = 0,
   DOUBLE,
};

namespace AudioLib {
    class Wav : public Signal {
        public: 

           Wav(); 
           Wav(const int M, const int N);

           ///...  ->
    };
 };
.cpp文件包含这个类的实现,一切都编译得很好

我正在尝试使用boost.Python实现Python包装器,并具有以下文件:

#include <boost/python.hpp>
#include "../src/Wav/Wav.h"

using namespace boost::python;

BOOST_PYTHON_MODULE(Wav)
{       
    class_<AudioLib::Wav>("Wav", 
          init<const int, const int>());
}
每当我尝试导入Python时,都会得到以下结果:

导入错误:Wav.so:未定义符号:ZN8AudioLib3WavC1Eii


我哪里出错了?

看起来您未能定义第二个构造函数:

Wav(const int M, const int N);
我可以复制错误消息,方法是使用内嵌定义制作示例的工作(但简化)副本,然后删除该构造函数的定义。因此,我的建议是仔细检查Wav.cpp中的定义,并尝试创建一个在线定义进行实验


如果定义确实存在,则可能链接器标志不正确。

看起来您未能定义第二个构造函数:

Wav(const int M, const int N);
我可以复制错误消息,方法是使用内嵌定义制作示例的工作(但简化)副本,然后删除该构造函数的定义。因此,我的建议是仔细检查Wav.cpp中的定义,并尝试创建一个在线定义进行实验

如果定义确实存在,则可能链接器标志不正确