मेरे CMake का उपयोग कर बनाई गई है जैसेctypes साझा लाइब्रेरी में प्रतीकों नहीं मिल linux में एक साझा lib बनाने के लिए की स्थापना CMake
SET (CMAKE_CXX_FLAGS "-fPIC")
SET (LIB_UTILS_SRC
Utils.cpp
)
ADD_LIBRARY (UTILS SHARED
${LIB_UTILS_SRC}
)
स्रोत Utils.cpp
double addTwoNumber(double x, double y)
{
return x + y;
}
जब उपयोग करने के लिए 'कोशिश कर addTwoNumber कुछ '
import os
import ctypes as c
libPath = '/home/AP/workspace/LearningCPP/lib/libUTILS.so'
libUTILS = c.cdll.LoadLibrary(libPath)
prototype = c.CFUNCTYPE(
c.c_double,
c.c_double,
c.c_double
)
addTwoNumber = prototype(('addTwoNumber', libUTILS))
res = addTwoNumber(c.c_double(2.3), c.c_double(3.5))
मुझे कुछ संदेश मिल रहा है जैसे सीटीपीप्स का उपयोग करना।
AttributeError: /home/AP/workspace/LearningCPP/lib/libUTILS.so:
undefined symbol: addTwoNumber
मैं "एनएम --demangle libUTILS.so" आदेश का उपयोग libUTILS.so की जाँच की और यह स्पष्ट रूप से उस में 'addTwoNumber' प्रतीक को दर्शाता है।
मुझे अभी भी पायथन से "अनिर्धारित प्रतीक" संदेश क्यों मिल रहा है? मुझे लगता है कि सेट करने के लिए कुछ कंपाइलर झंडे होना चाहिए ताकि प्रतीक ठीक से उलझ जाए। किसी भी सुझाव का स्वागत है !
इसके लिए धन्यवाद। मुझे एक ही समस्या का सामना करना पड़ रहा था - यह पता चला कि मुझे बस अपने सभी कार्यों को 'बाहरी' सी '' की आवश्यकता है (जैसा कि [सी/सी ++ अनुभाग के साथ विस्तारित पायथन] में पाइथन दस्तावेज में भी उल्लेख किया गया है (http: // docs। python.org/2/extending/extending.html#writing-extensions-in-c))। – Breakthrough