dzhoshkun / ndicapi Goto Github PK
View Code? Open in Web Editor NEWThis project forked from plustoolkit/ndicapi
A common C API for communicating with NDI Polaris and Aurora devices
License: MIT License
This project forked from plustoolkit/ndicapi
A common C API for communicating with NDI Polaris and Aurora devices
License: MIT License
ndicapy is prettier than pyndicapi and easier to pronounce.
ndicapimodule.cxx
is appended to the project sources when building the C++ library.
However it is only needed when building the Python library, which is a separate step.
As such it should be safe (and probably better) to decouple it from the C++ library installation.
The basic example includes a Windows-specific ParallelProbe
function that gets activated for certain versions of the Visual C++ compiler.
That function has not been incorporated into the Python replica (#4) of the ndiBasicExample
provided as part of the original codebase.
Otherwise an invalid pointer
error occurs as in the following sample trace:
*** Error in `/usr/bin/python': free(): invalid pointer: 0x00007fbe56d57138 ***
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x777e5)[0x7fbe5663c7e5]
/lib/x86_64-linux-gnu/libc.so.6(+0x8037a)[0x7fbe5664537a]
/lib/x86_64-linux-gnu/libc.so.6(cfree+0x4c)[0x7fbe5664953c]
/usr/bin/python(PyDict_SetItem+0x442)[0x4a0d82]
/usr/bin/python(_PyModule_Clear+0x133)[0x5027e3]
/usr/bin/python(PyImport_Cleanup+0x1ac)[0x50234c]
/usr/bin/python(Py_Finalize+0x89)[0x5000b9]
/usr/bin/python(Py_Main+0x4ad)[0x49dfed]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)[0x7fbe565e5830]
/usr/bin/python(_start+0x29)[0x49da59]
======= Memory map: ========
00400000-006e9000 r-xp 00000000 08:03 20972751 /usr/bin/python2.7
008e8000-008ea000 r--p 002e8000 08:03 20972751 /usr/bin/python2.7
008ea000-00961000 rw-p 002ea000 08:03 20972751 /usr/bin/python2.7
00961000-00984000 rw-p 00000000 00:00 0
012ed000-013d5000 rw-p 00000000 00:00 0 [heap]
7fbe50000000-7fbe50021000 rw-p 00000000 00:00 0
7fbe50021000-7fbe54000000 ---p 00000000 00:00 0
7fbe54a67000-7fbe54d59000 r-xp 00000000 08:03 20981546 /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0
7fbe54d59000-7fbe54f59000 ---p 002f2000 08:03 20981546 /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0
7fbe54f59000-7fbe54f5b000 r--p 002f2000 08:03 20981546 /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0
7fbe54f5b000-7fbe54fd2000 rw-p 002f4000 08:03 20981546 /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0
7fbe54fd2000-7fbe54ff5000 rw-p 00000000 00:00 0
7fbe54ff5000-7fbe5500b000 r-xp 00000000 08:03 1446295 /lib/x86_64-linux-gnu/libgcc_s.so.1
7fbe5500b000-7fbe5520a000 ---p 00016000 08:03 1446295 /lib/x86_64-linux-gnu/libgcc_s.so.1
7fbe5520a000-7fbe5520b000 rw-p 00015000 08:03 1446295 /lib/x86_64-linux-gnu/libgcc_s.so.1
7fbe5520b000-7fbe5537d000 r-xp 00000000 08:03 20971918 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
7fbe5537d000-7fbe5557d000 ---p 00172000 08:03 20971918 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
7fbe5557d000-7fbe55587000 r--p 00172000 08:03 20971918 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
7fbe55587000-7fbe55589000 rw-p 0017c000 08:03 20971918 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
7fbe55589000-7fbe5558d000 rw-p 00000000 00:00 0
7fbe5558d000-7fbe555a8000 r-xp 00000000 08:02 1978429 /home/dzhoshkun/ws/_i/ndicapi/lib/libndicapi.so
7fbe555a8000-7fbe557a7000 ---p 0001b000 08:02 1978429 /home/dzhoshkun/ws/_i/ndicapi/lib/libndicapi.so
7fbe557a7000-7fbe557a8000 r--p 0001a000 08:02 1978429 /home/dzhoshkun/ws/_i/ndicapi/lib/libndicapi.so
7fbe557a8000-7fbe557aa000 rw-p 0001b000 08:02 1978429 /home/dzhoshkun/ws/_i/ndicapi/lib/libndicapi.so
7fbe557aa000-7fbe557c1000 r-xp 00000000 08:02 2098951 /home/dzhoshkun/.local/lib/python2.7/site-packages/pyndicapi.so
7fbe557c1000-7fbe559c0000 ---p 00017000 08:02 2098951 /home/dzhoshkun/.local/lib/python2.7/site-packages/pyndicapi.so
7fbe559c0000-7fbe559c1000 r--p 00016000 08:02 2098951 /home/dzhoshkun/.local/lib/python2.7/site-packages/pyndicapi.so
7fbe559c1000-7fbe559c3000 rw-p 00017000 08:02 2098951 /home/dzhoshkun/.local/lib/python2.7/site-packages/pyndicapi.so
7fbe559c3000-7fbe55c9b000 r--p 00000000 08:03 20972417 /usr/lib/locale/locale-archive
7fbe55c9b000-7fbe55da3000 r-xp 00000000 08:03 1445867 /lib/x86_64-linux-gnu/libm-2.23.so
7fbe55da3000-7fbe55fa2000 ---p 00108000 08:03 1445867 /lib/x86_64-linux-gnu/libm-2.23.so
7fbe55fa2000-7fbe55fa3000 r--p 00107000 08:03 1445867 /lib/x86_64-linux-gnu/libm-2.23.so
7fbe55fa3000-7fbe55fa4000 rw-p 00108000 08:03 1445867 /lib/x86_64-linux-gnu/libm-2.23.so
7fbe55fa4000-7fbe55fbd000 r-xp 00000000 08:03 1441797 /lib/x86_64-linux-gnu/libz.so.1.2.8
7fbe55fbd000-7fbe561bc000 ---p 00019000 08:03 1441797 /lib/x86_64-linux-gnu/libz.so.1.2.8
7fbe561bc000-7fbe561bd000 r--p 00018000 08:03 1441797 /lib/x86_64-linux-gnu/libz.so.1.2.8
7fbe561bd000-7fbe561be000 rw-p 00019000 08:03 1441797 /lib/x86_64-linux-gnu/libz.so.1.2.8
7fbe561be000-7fbe561c0000 r-xp 00000000 08:03 1445890 /lib/x86_64-linux-gnu/libutil-2.23.so
7fbe561c0000-7fbe563bf000 ---p 00002000 08:03 1445890 /lib/x86_64-linux-gnu/libutil-2.23.so
7fbe563bf000-7fbe563c0000 r--p 00001000 08:03 1445890 /lib/x86_64-linux-gnu/libutil-2.23.so
7fbe563c0000-7fbe563c1000 rw-p 00002000 08:03 1445890 /lib/x86_64-linux-gnu/libutil-2.23.so
7fbe563c1000-7fbe563c4000 r-xp 00000000 08:03 1445885 /lib/x86_64-linux-gnu/libdl-2.23.so
7fbe563c4000-7fbe565c3000 ---p 00003000 08:03 1445885 /lib/x86_64-linux-gnu/libdl-2.23.so
7fbe565c3000-7fbe565c4000 r--p 00002000 08:03 1445885 /lib/x86_64-linux-gnu/libdl-2.23.so
7fbe565c4000-7fbe565c5000 rw-p 00003000 08:03 1445885 /lib/x86_64-linux-gnu/libdl-2.23.so
7fbe565c5000-7fbe56785000 r-xp 00000000 08:03 1445883 /lib/x86_64-linux-gnu/libc-2.23.so
7fbe56785000-7fbe56985000 ---p 001c0000 08:03 1445883 /lib/x86_64-linux-gnu/libc-2.23.so
7fbe56985000-7fbe56989000 r--p 001c0000 08:03 1445883 /lib/x86_64-linux-gnu/libc-2.23.so
7fbe56989000-7fbe5698b000 rw-p 001c4000 08:03 1445883 /lib/x86_64-linux-gnu/libc-2.23.so
7fbe5698b000-7fbe5698f000 rw-p 00000000 00:00 0
7fbe5698f000-7fbe569a7000 r-xp 00000000 08:03 1445874 /lib/x86_64-linux-gnu/libpthread-2.23.so
7fbe569a7000-7fbe56ba6000 ---p 00018000 08:03 1445874 /lib/x86_64-linux-gnu/libpthread-2.23.so
7fbe56ba6000-7fbe56ba7000 r--p 00017000 08:03 1445874 /lib/x86_64-linux-gnu/libpthread-2.23.so
7fbe56ba7000-7fbe56ba8000 rw-p 00018000 08:03 1445874 /lib/x86_64-linux-gnu/libpthread-2.23.so
7fbe56ba8000-7fbe56bac000 rw-p 00000000 00:00 0
7fbe56bac000-7fbe56bd2000 r-xp 00000000 08:03 1445872 /lib/x86_64-linux-gnu/ld-2.23.so
7fbe56c52000-7fbe56d88000 rw-p 00000000 00:00 0
7fbe56d90000-7fbe56dd1000 rw-p 00000000 00:00 0
7fbe56dd1000-7fbe56dd2000 r--p 00025000 08:03 1445872 /lib/x86_64-linux-gnu/ld-2.23.so
7fbe56dd2000-7fbe56dd3000 rw-p 00026000 08:03 1445872 /lib/x86_64-linux-gnu/ld-2.23.so
7fbe56dd3000-7fbe56dd4000 rw-p 00000000 00:00 0
7ffe6e0f2000-7ffe6e113000 rw-p 00000000 00:00 0 [stack]
7ffe6e171000-7ffe6e174000 r--p 00000000 00:00 0 [vvar]
7ffe6e174000-7ffe6e176000 r-xp 00000000 00:00 0 [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]
The program has unexpectedly finished.
/usr/bin/python crashed.
Also see this comment
As of 2599de8 using the Python module leads to a double free or corruption
error (sample trace attached to the end of description).
I've managed to trace it down to the use of the PyNDIBitfield_FromUnsignedLong
function.
The PyNDIBitfieldObject
returned by this function does not seem to be used anywhere in the codebase.
So maybe it should be removed altogether?
The following is a sample trace of the error on my Ubuntu 16.04.3 LTS:
*** Error in `python': double free or corruption (out): 0x00007ff56ef41b70 ***
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x777e5)[0x7ff56e8267e5]
/lib/x86_64-linux-gnu/libc.so.6(+0x8037a)[0x7ff56e82f37a]
/lib/x86_64-linux-gnu/libc.so.6(cfree+0x4c)[0x7ff56e83353c]
python[0x434ccd]
python(PyObject_RichCompare+0x230)[0x4acba0]
python(PyEval_EvalFrameEx+0x6218)[0x4ca188]
python(PyEval_EvalCodeEx+0x255)[0x4c2705]
python(PyEval_EvalCode+0x19)[0x4c24a9]
python[0x4f19ef]
python(PyRun_FileExFlags+0x82)[0x4ec372]
python(PyRun_SimpleFileExFlags+0x191)[0x4eaaf1]
python(Py_Main+0x6c8)[0x49e208]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)[0x7ff56e7cf830]
python(_start+0x29)[0x49da59]
======= Memory map: ========
00400000-006e9000 r-xp 00000000 08:03 20972751 /usr/bin/python2.7
008e8000-008ea000 r--p 002e8000 08:03 20972751 /usr/bin/python2.7
008ea000-00961000 rw-p 002ea000 08:03 20972751 /usr/bin/python2.7
00961000-00984000 rw-p 00000000 00:00 0
02357000-02440000 rw-p 00000000 00:00 0 [heap]
7ff568000000-7ff568021000 rw-p 00000000 00:00 0
7ff568021000-7ff56c000000 ---p 00000000 00:00 0
7ff56cc51000-7ff56cf43000 r-xp 00000000 08:03 20981546 /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0
7ff56cf43000-7ff56d143000 ---p 002f2000 08:03 20981546 /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0
7ff56d143000-7ff56d145000 r--p 002f2000 08:03 20981546 /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0
7ff56d145000-7ff56d1bc000 rw-p 002f4000 08:03 20981546 /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0
7ff56d1bc000-7ff56d1df000 rw-p 00000000 00:00 0
7ff56d1df000-7ff56d1f5000 r-xp 00000000 08:03 1446295 /lib/x86_64-linux-gnu/libgcc_s.so.1
7ff56d1f5000-7ff56d3f4000 ---p 00016000 08:03 1446295 /lib/x86_64-linux-gnu/libgcc_s.so.1
7ff56d3f4000-7ff56d3f5000 rw-p 00015000 08:03 1446295 /lib/x86_64-linux-gnu/libgcc_s.so.1
7ff56d3f5000-7ff56d567000 r-xp 00000000 08:03 20971918 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
7ff56d567000-7ff56d767000 ---p 00172000 08:03 20971918 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
7ff56d767000-7ff56d771000 r--p 00172000 08:03 20971918 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
7ff56d771000-7ff56d773000 rw-p 0017c000 08:03 20971918 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
7ff56d773000-7ff56d777000 rw-p 00000000 00:00 0
7ff56d777000-7ff56d792000 r-xp 00000000 08:02 1991959 /home/dzhoshkun/ws/_i/ndicapi/lib/libndicapi.so
7ff56d792000-7ff56d991000 ---p 0001b000 08:02 1991959 /home/dzhoshkun/ws/_i/ndicapi/lib/libndicapi.so
7ff56d991000-7ff56d992000 r--p 0001a000 08:02 1991959 /home/dzhoshkun/ws/_i/ndicapi/lib/libndicapi.so
7ff56d992000-7ff56d994000 rw-p 0001b000 08:02 1991959 /home/dzhoshkun/ws/_i/ndicapi/lib/libndicapi.so
7ff56d994000-7ff56d9ab000 r-xp 00000000 08:02 2098951 /home/dzhoshkun/.local/lib/python2.7/site-packages/pyndicapi.so
7ff56d9ab000-7ff56dbaa000 ---p 00017000 08:02 2098951 /home/dzhoshkun/.local/lib/python2.7/site-packages/pyndicapi.so
7ff56dbaa000-7ff56dbab000 r--p 00016000 08:02 2098951 /home/dzhoshkun/.local/lib/python2.7/site-packages/pyndicapi.so
7ff56dbab000-7ff56dbad000 rw-p 00017000 08:02 2098951 /home/dzhoshkun/.local/lib/python2.7/site-packages/pyndicapi.so
7ff56dbad000-7ff56de85000 r--p 00000000 08:03 20972417 /usr/lib/locale/locale-archive
7ff56de85000-7ff56df8d000 r-xp 00000000 08:03 1445867 /lib/x86_64-linux-gnu/libm-2.23.so
7ff56df8d000-7ff56e18c000 ---p 00108000 08:03 1445867 /lib/x86_64-linux-gnu/libm-2.23.so
7ff56e18c000-7ff56e18d000 r--p 00107000 08:03 1445867 /lib/x86_64-linux-gnu/libm-2.23.so
7ff56e18d000-7ff56e18e000 rw-p 00108000 08:03 1445867 /lib/x86_64-linux-gnu/libm-2.23.so
7ff56e18e000-7ff56e1a7000 r-xp 00000000 08:03 1441797 /lib/x86_64-linux-gnu/libz.so.1.2.8
7ff56e1a7000-7ff56e3a6000 ---p 00019000 08:03 1441797 /lib/x86_64-linux-gnu/libz.so.1.2.8
7ff56e3a6000-7ff56e3a7000 r--p 00018000 08:03 1441797 /lib/x86_64-linux-gnu/libz.so.1.2.8
7ff56e3a7000-7ff56e3a8000 rw-p 00019000 08:03 1441797 /lib/x86_64-linux-gnu/libz.so.1.2.8
7ff56e3a8000-7ff56e3aa000 r-xp 00000000 08:03 1445890 /lib/x86_64-linux-gnu/libutil-2.23.so
7ff56e3aa000-7ff56e5a9000 ---p 00002000 08:03 1445890 /lib/x86_64-linux-gnu/libutil-2.23.so
7ff56e5a9000-7ff56e5aa000 r--p 00001000 08:03 1445890 /lib/x86_64-linux-gnu/libutil-2.23.so
7ff56e5aa000-7ff56e5ab000 rw-p 00002000 08:03 1445890 /lib/x86_64-linux-gnu/libutil-2.23.so
7ff56e5ab000-7ff56e5ae000 r-xp 00000000 08:03 1445885 /lib/x86_64-linux-gnu/libdl-2.23.so
7ff56e5ae000-7ff56e7ad000 ---p 00003000 08:03 1445885 /lib/x86_64-linux-gnu/libdl-2.23.so
7ff56e7ad000-7ff56e7ae000 r--p 00002000 08:03 1445885 /lib/x86_64-linux-gnu/libdl-2.23.so
7ff56e7ae000-7ff56e7af000 rw-p 00003000 08:03 1445885 /lib/x86_64-linux-gnu/libdl-2.23.so
7ff56e7af000-7ff56e96f000 r-xp 00000000 08:03 1445883 /lib/x86_64-linux-gnu/libc-2.23.so
7ff56e96f000-7ff56eb6f000 ---p 001c0000 08:03 1445883 /lib/x86_64-linux-gnu/libc-2.23.so
7ff56eb6f000-7ff56eb73000 r--p 001c0000 08:03 1445883 /lib/x86_64-linux-gnu/libc-2.23.so
7ff56eb73000-7ff56eb75000 rw-p 001c4000 08:03 1445883 /lib/x86_64-linux-gnu/libc-2.23.so
7ff56eb75000-7ff56eb79000 rw-p 00000000 00:00 0
7ff56eb79000-7ff56eb91000 r-xp 00000000 08:03 1445874 /lib/x86_64-linux-gnu/libpthread-2.23.so
7ff56eb91000-7ff56ed90000 ---p 00018000 08:03 1445874 /lib/x86_64-linux-gnu/libpthread-2.23.so
7ff56ed90000-7ff56ed91000 r--p 00017000 08:03 1445874 /lib/x86_64-linux-gnu/libpthread-2.23.so
7ff56ed91000-7ff56ed92000 rw-p 00018000 08:03 1445874 /lib/x86_64-linux-gnu/libpthread-2.23.so
7ff56ed92000-7ff56ed96000 rw-p 00000000 00:00 0
7ff56ed96000-7ff56edbc000 r-xp 00000000 08:03 1445872 /lib/x86_64-linux-gnu/ld-2.23.so
7ff56ee3c000-7ff56ef72000 rw-p 00000000 00:00 0
7ff56ef7a000-7ff56efbb000 rw-p 00000000 00:00 0
7ff56efbb000-7ff56efbc000 r--p 00025000 08:03 1445872 /lib/x86_64-linux-gnu/ld-2.23.so
7ff56efbc000-7ff56efbd000 rw-p 00026000 08:03 1445872 /lib/x86_64-linux-gnu/ld-2.23.so
7ff56efbd000-7ff56efbe000 rw-p 00000000 00:00 0
7ffd4823d000-7ffd4825e000 rw-p 00000000 00:00 0 [stack]
7ffd482e3000-7ffd482e6000 r--p 00000000 00:00 0 [vvar]
7ffd482e6000-7ffd482e8000 r-xp 00000000 00:00 0 [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]
[1] 21115 abort (core dumped) python Applications/ndiBasicExample.py
This guideline in conj. with this more detailed one shows how to port extension modules to Python 3.
In addition see this discussion.
Type object definitions in Python 3 and Python 2 are relevant (esp. PyNumberMethods
).
In particular when trying to compile against Python 3, the following errors are encountered:
dzhoshkun@joshuah ‹ master ●● › : ~/workspace/ndicapi
[0] % python3 setup.py build
running build
running build_ext
building 'pyndicapi' extension
x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/python3.5m -c ndicapi.cxx -o build/temp.linux-x86_64-3.5/ndicapi.o
cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++
ndicapi.cxx: In function ‘char* ndiErrorString(int)’:
[...]
x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/python3.5m -c ndicapi_math.cxx -o build/temp.linux-x86_64-3.5/ndicapi_math.o
cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++
ndicapi_math.cxx:96:1: warning: multi-line comment [-Wcomment]
// / m_11 m_12 m_11 m_12 \
^
ndicapi_math.cxx:243:1: warning: multi-line comment [-Wcomment]
// / 1 0 0 \ / cos(pch) 0 -sin(pch) \ / cos(rol) sin(rol) 0 \
^
x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/python3.5m -c ndicapi_serial.cxx -o build/temp.linux-x86_64-3.5/ndicapi_serial.o
cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++
In file included from ndicapi_serial.cxx:55:0:
ndicapi_serial_unix.cxx: In function ‘int ndiSerialRead(int, char*, int, bool, int*)’:
ndicapi_serial_unix.cxx:436:19: warning: suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses]
if (!isBinary && reply[totalNumberOfBytesRead - 1] == '\r' /* done when carriage return received (ASCII) or when ERROR... re
^
x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/python3.5m -c ndicapi_thread.cxx -o build/temp.linux-x86_64-3.5/ndicapi_thread.o
cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++
x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/python3.5m -c ndicapimodule.cxx -o build/temp.linux-x86_64-3.5/ndicapimodule.o
cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++
ndicapimodule.cxx: In function ‘PyObject* PyNdicapi_PyString(PyObject*)’:
ndicapimodule.cxx:53:35: error: ‘PyString_FromString’ was not declared in this scope
return PyString_FromString(space);
^
ndicapimodule.cxx: In function ‘PyObject* PyNdicapi_PyRepr(PyObject*)’:
ndicapimodule.cxx:61:35: error: ‘PyString_FromString’ was not declared in this scope
return PyString_FromString(space);
^
ndicapimodule.cxx: At global scope:
ndicapimodule.cxx:84:4: error: ‘cmpfunc’ was not declared in this scope
(cmpfunc)0, /* tp_compare */
^
ndicapimodule.cxx:84:12: error: expected ‘}’ before numeric constant
(cmpfunc)0, /* tp_compare */
^
ndicapimodule.cxx:84:12: error: expected ‘,’ or ‘;’ before numeric constant
ndicapimodule.cxx:97:1: error: expected declaration before ‘}’ token
};
^
ndicapimodule.cxx:48:18: warning: ‘PyObject* PyNdicapi_PyString(PyObject*)’ defined but not used [-Wunused-function]
static PyObject* PyNdicapi_PyString(PyObject* self)
^
ndicapimodule.cxx:56:18: warning: ‘PyObject* PyNdicapi_PyRepr(PyObject*)’ defined but not used [-Wunused-function]
static PyObject* PyNdicapi_PyRepr(PyObject* self)
^
ndicapimodule.cxx:73:21: warning: ‘PyNdicapiType’ defined but not used [-Wunused-variable]
static PyTypeObject PyNdicapiType =
^
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.