【发布时间】:2015-05-01 00:25:51
【问题描述】:
我正在尝试将 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*)
你能看出我做错了什么吗?
【问题讨论】:
-
会不会是你没有定义
makeKDBObj构造函数?