在运行时动态加载库不起作用

时间:2013-05-16 14:34:35

标签: c++ vtk

我尝试使用以下代码在运行时加载* .so:

handle = dlopen(Path, RTLD_LAZY);
create = (FunctionEquationInterface* (*)())dlsym(handle, "CreateClass");
destroy = (void (*)(FunctionEquationInterface*))dlsym(handle, "DestroyClass");

FunctionEquationInterface看起来像:

class LocalFunctionImplementation : public FunctionEquationInterface
{
public:
    virtual int CreatePolynom(vtkUnstructuredGrid *input, vtkDataArray *coefficientArray);
    virtual double Evaluate(Point *point);
};

extern "C" LocalFunctionImplementation* CreateClass();
extern "C" void DestroyClass(LocalFunctionImplementation*);

我使用cmake构建lib

add_library(${PROJECT_NAME} SHARED LocalFunctionImplementation.cpp)

问题是不会加载lib。 handle仍为NULL。

我认为这与VTK的链接有关,但我不知道如何解决这个问题。

1 个答案:

答案 0 :(得分:0)

好的确有效。我需要TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${VTK_LIBRARIES})。所以将加载lib