【问题标题】:undefined reference to `std::basic_string<wchar_t,对 `std::basic_string<wchar_t, 的未定义引用
【发布时间】:2011-12-04 12:48:11
【问题描述】:

我正在尝试使用 cygwin 编译我的 c++ 文件。 \文件已编译,但发生链接时间错误 这类错误...

undefined reference to `std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::size() const'

还有一些错误,例如

undefined reference to `sqlite3_mprintf'
undefined reference to `sqlite3_exec'
undefined reference to `sqlite3_free'
undefined reference to `sqlite3_free'
undefined reference to `sqlite3_free'
undefined reference to `sqlite3_exec'

请帮帮我?

谢谢。

【问题讨论】:

  • 能否请您添加包含标题的代码。为什么你用 android 标签来标记这个问题?请在一般情况下澄清您的问题并添加有关上下文的更多信息。
  • 我用 c++ 编写了一些代码,并且有很多 cpp 文件,我正在编译这些文件。所有文件都已成功编译,但是在创建 .so 文件(即共享库)时,它给了我这样的错误。我想使用这个 .so 文件,以便我可以使用 JNI 从我的 android 项目中调用方法。跨度>
  • 你能发布你的链接命令吗?

标签: android sqlite makefile undefined-reference


【解决方案1】:

标准 C++ 库似乎没有被链接。您是否将代码与 g++gccld 链接?如果使用第一个,该库会自动链接,但如果您使用其他两个,则不会。

对于sqlite3的错误,你需要在链接命令中添加-lsqlite3(当然假设你已经安装了它)。

【讨论】: