Я делаю общую библиотеку .so c ++, где я использую HCNE_SDK v.6.0.2.2 для вызова подобно GetStream () из python, когда я делаю компиляцию файла .so, импортирую в python и запускаю
int iRealPlayHandle = NET_DVR_RealPlay_V40(iUserID, &struPreviewInfo, g_RealDataCallBack_V30, NULL);
Я получаю код ошибки 157 "NET_DVR_LOAD_SSLEAY32_DLL_ERROR" Failed to load ssleay32.dll.
С другой стороны, когда я делаю ту же процедуру, но добавляю метод main в файл и удаляю флаг -shared, я получаю исполняемый файлэто делает работу хорошо.В чем проблема, похоже, что совместно используемая библиотека не устанавливает функцию обратного вызова и имеет некоторые ошибки при импорте некоторых модулей
IPython = /usr/include/python3.5
CC = gcc
CXX = g++
CFLAGS = -g
CXXFLAGS = $(CFLAGS)
LIBPATH = ./
PyFLAGS=-lboost_python -lpython3.5m -lpthread
BoostFlag=-I$(IPython) -MMD -MP -MF $@.d -fPIC
LIBS= -Wl,-rpath=./:./HCNetSDKCom -lhcnetsdk
OBJ = HikvisionDriver.o
s: libHikvision.so
x: libHikvision
libHikvision: $(OBJ)
$(CXX) $(CXXFLAGS) -o libHikvision $(OBJ) -L$(LIBPATH) $(LIBS) $(PyFLAGS)
libHikvision.so: $(OBJ)
$(CXX) $(CXXFLAGS) -shared -o libHikvision.so $(OBJ) -L$(LIBPATH) $(LIBS) $(PyFLAGS)
HikvisionDriver.o: HikvisionDriver.cpp
$(CXX) $(OPTI) $(CXXFLAGS) $(BoostFlag) -Wall -L$(LIBPATH) $(LIBS) -c -o $@ $<