C++ 从共享库加载函数时出现错误消息
我试图把C++ DLL加载到我的C应用程序中。我已经成功编译了一个.so文件,并定义了一个名为getkobj的函数 当我尝试加载它时,我得到一个错误:C++ 从共享库加载函数时出现错误消息,c++,kdb,C++,Kdb,我试图把C++ DLL加载到我的C应用程序中。我已经成功编译了一个.so文件,并定义了一个名为getkobj的函数 当我尝试加载它时,我得到一个错误: /home/Models/Code/makeKDBObj.so: undefined symbol: _ZN10makeKDBObjC1Ev 我有一个头文件: #include "k.h" class makeKDBObj { public: makeKDBObj(); virtual KK getkobj(K
/home/Models/Code/makeKDBObj.so: undefined symbol: _ZN10makeKDBObjC1Ev
我有一个头文件:
#include "k.h"
class makeKDBObj
{
public:
makeKDBObj();
virtual KK getkobj(KK FileName);
};
和源文件:
#include "makeKDBObj.hpp"
extern "C" makeKDBObj* create_object()
{
return new makeKDBObj;
}
extern "C" void destroy_object(makeKDBObj* object )
{
delete object;
}
extern "C" makeKDBObj* getkobj()
{
return new makeKDBObj;
}
K getkobj (K FileName)
{
// ...
}
我可以在文件中找到带有nm-gC makeKDBObj.so | grep getkobj
的符号:
00000000000047a0 T getkobj(k0*)
你能看到我可能做错了什么吗?你的extern“C”语法正确吗
这似乎意味着您必须声明函数extern“C”,然后在单独的步骤中定义它。可能是您没有定义
makeKDBObj
构造函数吗?