Mi CMake es algo así comoctypes no encontrar símbolos en la biblioteca compartida creada usando la configuración para crear una librería compartida en Linux CMake
SET (CMAKE_CXX_FLAGS "-fPIC")
SET (LIB_UTILS_SRC
Utils.cpp
)
ADD_LIBRARY (UTILS SHARED
${LIB_UTILS_SRC}
)
Fuente Utils.cpp
double addTwoNumber(double x, double y)
{
return x + y;
}
al intentar acceder a 'addTwoNumber 'función con CTypes como
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))
Me está llegando un mensaje como.
AttributeError: /home/AP/workspace/LearningCPP/lib/libUTILS.so:
undefined symbol: addTwoNumber
he comprobado la libUTILS.so usando el comando "nm --demangle libUTILS.so" y muestra claramente el símbolo 'addTwoNumber' en ella.
¿Por qué sigo recibiendo el mensaje "símbolo indefinido" de pitón? Supongo que debe haber algunos indicadores del compilador que se deben establecer para que los símbolos se procesen correctamente. ¡Cualquier sugerencia sería apreciada!
Gracias por esto. Estaba enfrentando el mismo problema, resulta que simplemente necesitaba 'externar' C '' todas mis funciones (como también se menciona en la documentación de Python en [Extendiendo Python con la sección C o C++] (http: // docs. python.org/2/extendiendo/extendiendo.html#writing-extensions-in-c)). – Breakthrough