我有一个名为“Wav”的类,它存储在另一个目录中,文件为“Wav.h”和波浪.cpp“看起来如下:
enum ReadType {
NATIVE = 0,
DOUBLE,
};
namespace AudioLib {
class Wav : public Signal {
public:
Wav();
Wav(const int M, const int N);
///... ->
};
};
cpp文件包含这个类的实现,一切都可以很好地编译。在
我尝试使用boost.python并保存以下文件:
^{pr2}$在我的Makefile中,我正在编译波浪.cpp公司名称:
# Compile the .wav Python and Cpp file
$(WAV_TARGET).so: $(WAV_TARGET).o
g++ -shared -Wl,--export-dynamic $(WAV_TARGET).o -L$(BOOST_LIB) -lboost_python -
lboost_python -L/usr/lib/python$(PYTHON_VERSION)/config -lpython$(PYTHON_VERSION) -o
$(WAV_TARGET).so
$(WAV_TARGET).o: $(WAV_TARGET).cpp
g++ $(CFLAGS) ../src/Wav/Wav.cpp -I$(PYTHON_INCLUDE) -I$(BOOST_INC) -fPIC -c
$(WAV_TARGET).cpp
每当我尝试导入Python时,我会得到以下结果:
ImportError: Wav.so: undefined symbol: _ZN8AudioLib3WavC1Eii
我哪里出错了?在
您似乎未能定义第二个构造函数:
我可以复制错误消息,方法是用内嵌定义创建一个有效的(但简化的)示例副本,然后删除该构造函数的定义。所以我的建议是仔细检查波浪.cpp试着创造一个新的定义。
如果定义确实存在,可能链接器标志不正确。
相关问题 更多 >
编程相关推荐