неопределенный символ, используя pybind11 cmd - PullRequest
1 голос
/ 28 апреля 2020

я хочу использовать pybind11 для создания .so, мой код содержит этот заголовок

`#include <pybind11/pybind11.h>
#include <gst/gst.h>
#include <glib.h>
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <sys/time.h>
#include "nvbufsurface.h"`

, когда я использую:

c ++ -O3 -Wall -shared -std = c ++ 11 -fPI C python3-config --cflags --ldflags -I / usr / local / lib / python3 .6 / dist-packages / pybind11 / include -I / home / xxx / deepstream_sdk_v4.0.2_x86_64 / sources / includes pkg-config --cflags gstreamer-1.0,opencv -L / home / xxx / deepstream / deepstream-4.0 / lib / -lnvbufsurface -lcudart -lnvdsgst_meta -lnvds_meta -lnvdsgst_helper pkg-config --libs gstreamer-1.0,opencv пример. cpp -o пример.so

или я использую:

c ++ -O3 -Wall -shared -std = c ++ 11 -fPI C pkg-config --cflags gstreamer-1.0 -L / home / xxx / deepstream / deepstream-4.0 / lib -lnvbufsurface -lnvdsgst_meta -lnvds_meta -lnvdsgst_helper -lm -I / home / xxx / deepstream_sdk_v4.0.2_x86_64 / sources / включает в себя pkg-config --libs gstreamer-1.0 python3 -m pybind11 --includes пример. cpp -о пример python3-config --extension-suffix

и я импортирую пример в python3 я получаю неопределенный символ: NvBufSurfaceSyncForDevice Пожалуйста, помогите мне

1 Ответ

0 голосов
/ 28 апреля 2020

Все эти флаги компоновщика должны прийти после cpp, который нуждается в них. Я разделил ваш код на разные строки для удобства чтения.

c++ -O3 -Wall -shared -std=c++11 -fPIC  \
`pkg-config --cflags gstreamer-1.0` \
-I/home/xxx/deepstream_sdk_v4.0.2_x86_64/sources/includes \
`python3 -m pybind11 --includes` \
example.cpp -o example`python3-config --extension-suffix` \
`pkg-config --libs gstreamer-1.0` \
-L/home/xxx/deepstream/deepstream-4.0/lib -lnvbufsurface -lnvdsgst_meta \
-lnvds_meta -lnvdsgst_helper \
-lm 
...