C++ 未解析的外部符号:找不到引用符号的函数

c++ unresolved external symbols: cannot find the function where the symbol is referenced

提问人:gladys0313 提问时间:11/18/2015 更新时间:11/18/2015 访问量:292

问:

我正在编写 c++ 代码。编译时(win7系统,使用build.bat在cmd中编译)出现如下错误:

handler.lib(Media.obj):error LNK2019: unresolved external symbol _lua_pcallk referenced in 
function "public:void __thiscall Media::loadScript(struct luabridge::lua_State *,class 
std::basic_string<char, struct std::char_traits<char>, class std::allocator<char> > const &)".....

因此,我试图找到该函数

public:void __thiscall Media::loadScript(....)

看看发生了什么,但我在我的工作场所找不到这个功能......关于为什么我找不到这个函数以及为什么会发生这个错误,我有以下想法(为了更清楚起见,整个系统包含11730个文件,这些文件非常复杂):

  1. “public:void __thiscall”后面的东西是一个变量或类似于变量的东西,在代码中的某个地方,这个变量已经被更改了。所以这就是为什么我找不到确切的功能。

  2. 有很多代码包含 main 函数,我需要在 main 函数中注册一些必要的 lua 环境。可能我选错了入口主函数?

这些只是我的想法,它们合理吗,还有其他想法吗?哦,在这项工作中,我们使用 LuaBridge 来做 C++ Lua 交互,之前做过类似工作的人遇到过同样的问题吗?

C++ 函数 lua unresolved-external

评论

1赞 Algirdas Preidžius 11/18/2015
您正在寻找位于类中并且是公共的方法。 是调用约定,通常用于类的成员函数,也称为方法(有关详细信息,请参阅此链接)。未解析的外部符号不是针对该函数的,而是在上面描述的方法中引用的。void loadScript (...)Media__thiscall_lua_pcallk
0赞 gladys0313 11/18/2015
@AlgirdasPreidžius非常感谢,这似乎很有帮助!让我检查一下
0赞 gladys0313 11/18/2015
@AlgirdasPreidžius 哦,当我试图找到“public:void __thiscall......”功能,我真的可以在看起来像“?addChild@skTreeNode@@QAEXPAV1@@Z @ 63 NONAME ;public: void __thiscall skTree::addChild(class skTree *)“,我认为这是为了适应系统中的一些脚本,因为”skTree”。如果我是对的,在这种情况下如何理解“__thiscall”?这和你说的没关系吗?
0赞 Algirdas Preidžius 11/18/2015
抱歉,我不需要使用 .dll 和 .def 文件从类导出(带方法),所以我不知道它是如何完成的。到目前为止,我只导出 C 样式函数。
0赞 roeland 11/19/2015
该函数似乎来自您正在链接的库 (),这解释了为什么您在源代码中找不到该函数。也许需要在链接器输入中添加另一个库,或者可能具有错误的库版本。handler.lib

答: 暂无答案