Pythonでプログラムを書いています。今、私は ctypes を使用して、c++ にあるクラスのいくつかの関数を使用したいと考えています。基本的に、私はPythonでデータの配列を持っています。その配列を使用して画像クラスに変換することになっているC ++の別のプログラムがあります。これが私がc ++で持っているプログラムです。私はすでにLinuxでメイクファイルを作成しており、コンパイルします。
ファイルの名前は「pclink.cpp」です
#include <stdio.h>
#include "MImage.h"
#include<stdlib.h>
#ifdef __cplusplus
extern "C" {
#endif
int conv(double* data, int x,int y, int z, int len) {
MImage M;
//M.MLoadFromArray(data,x,y,z,len);
return 0;
}
#ifdef __cplusplus
}
#endif
また、.so ファイルと .o ファイルを作成しましたが、すべて問題ないようです。しかし、Pythonで私が入力するとき
import numpy as np
import ctypes
import os
pclink = np.ctypeslib.load_library('pclink','.')
これは私が受け取るメッセージです
Traceback (most recent call last):
File "<pyshell#10>", line 1, in <module>
pclink=np.ctypeslib.load_library('pclink','.')
File "/usr/lib/python2.7/dist-packages/numpy/ctypeslib.py", line 131, in load_library
raise exc
OSError: /home/lucy94/pclink.so: undefined symbol: _ZN6MImage14MLoadFromArrayEPdiiii
以前、クラスを持たない単純なプログラムで c++ と python をリンクしようとしましたが、正常に動作しました。別のクラスからオブジェクトを定義しようとすると問題が発生するようです。誰でも問題を解決する方法を知っていますか?ありがとう