未定义符号:尝试将 pybind 导入 makefile c++ 项目时出现 PyInstanceMethod_Type

问题描述 投票:0回答:1

我在 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)
c++ makefile pybind11
1个回答
0
投票

我可以通过将 -lpython3.8 添加到 makefile 中的 ld 标志来解决此问题

© www.soinside.com 2019 - 2024. All rights reserved.