C++ 从共享库加载函数时出现错误消息

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

我试图把C++ DLL加载到我的C应用程序中。我已经成功编译了一个.so文件,并定义了一个名为getkobj的函数

当我尝试加载它时,我得到一个错误:

/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
构造函数吗?