我有奇怪的问题。当我使用共享库中的参数调用导入的方法时,在这些方法中我有错误的参数。就像是:
x = 1; y = 2; z = 3;
(*method)(x,y,z);
在方法中我有:
void method(int x, int y, int z){
// x = 2, y = 3, z = 32432423 - something like this
}
在这里我如何导入:
QVector<int> (*interpolateValue)( int, int, int );
libHandle = dlopen( "plugins/libinterpolate.so", RTLD_LAZY );
*(void **)(&interpolateValue) = dlsym( libHandle, "_ZN11Interpolate16interpolateValueEiii" );
QVector<int> ys = (*interpolateValue)( lastY, newY, step );
我以这种方式解决了这个问题:
QVector<int> (*interpolateValue)( int*, int, int, int );
QVector<int> ys = (*interpolateValue)( NULL, lastY, newY, step );
但我认为这不是一种手段。