我在 makefile 中使用 pybind11。我将 pybind11 的所有头文件添加到我的项目中。我收到错误:
错误/home/vagrant/ss/bt/strategies_dlls/PybindStrategy.so:未定义符号:PyInstanceMethod_Type
我做错了什么?我正在编译成一个在另一个项目中使用的 .so 文件。
这是我的 makefile 的一部分
INCLUDES=-I/usr/include -I/usr/include/python3.8 -I$(INCLUDEPATH)
LDFLAGS=$(LIBPATH)/libstrategystudio_analytics.a $(LIBPATH)/libstrategystudio.a $(LIBPATH)/libstrategystudio_transport.a $(LIBPATH)/libstrategystudio_marketmodels.a $(LIBPATH)/libstrategystudio_utilities.a $(LIBPATH)/libstrategystudio_flashprotocol.a
LIBRARY=PybindStrategy.so
SOURCES=PybindStrat.cpp
HEADERS=PybindStrat.h
OBJECTS=$(SOURCES:.cpp=.o)
all: $(HEADERS) $(LIBRARY)
$(LIBRARY) : $(OBJECTS)
$(CC) -shared -Wl,-soname,$(LIBRARY).1 -o $(LIBRARY) $(OBJECTS) $(LDFLAGS)
我可以通过将 -lpython3.8 添加到 makefile 中的 ld 标志来解决此问题