在将从C和C ++编译的目标文件混合时,出现了链接器错误。

我遇到了混合使用 C 和 C++ 代码的问题,我使用 gcc 和 g++ 分别编译 C 和 C++ 代码。C 代码调用 C++ 函数。我将它们分别编译,都能成功通过。然后将两个对象链接起来生成一个“.so”文件。但是当我从 lua 加载此模块时,模块加载失败,提示出现了一些未定义的符号。这里附上 C、C++ 和 lua 的错误信息。

我的问题是,什么是它提到的“未定义符号”?

原文链接 https://stackoverflow.com/questions/6085801

点赞
stackoverflow用户204046
stackoverflow用户204046

我认为您需要与C++库进行链接。c++filt可以帮助您解码混淆的符号名称:

main% c++filt _ZNSsaSEPKc
std :: basic_string <char,std :: char_traits <char>,std :: allocator <char >> :: operator =(char const *)
2011-05-22 03:18:56