0

次のコードを使用して、実行時に *.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の連携に問題があると思いますが、解決方法がわかりません。

4

1 に答える 1

0

わかりました。が必要でしTARGET_LINK_LIBRARIES(${PROJECT_NAME} ${VTK_LIBRARIES})た。したがって、libがロードされます

于 2013-05-16T16:05:34.440 に答える