- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用 a C library在我的 C++ 项目中,它使用 Cmake。在那个项目中,我正在从那个库中构建一个插件。在项目开发过程中,我曾经在cmake中将这样的文件添加到我的插件库中:
add_library(plugin SHARED
impl.cpp
Interface.h
${LIBBTC_REPO}/src/base58.c
${LIBBTC_REPO}/src/bip32.c
${LIBBTC_REPO}/src/block.c
${LIBBTC_REPO}/src/ripemd160.c
...
)
一切都很顺利。但是在使用函数 ripemd160()
之后,我的共享库开始出现 undefined symbol 错误:
plugin.so: undefined symbol: _Z9ripemd160PKhjPh
使用nm -g plugin.so 研究插件内容时 | grep -i ripe
,我得到了:
000000000002e1cb T ripemd160
U _Z9ripemd160PKhjPh
这表明原始 C 函数没有被破坏并且不可用,但 C++ 需要一个被破坏的函数名。我不明白。
令我惊讶的是,我还在其他文件中调用了其他函数。例如函数 utils_hex_to_bin()
,但我没有在那里得到那个 undefined symbol 错误。
为什么 C++ 期望此函数被专门破坏,而所有其他 C 函数却没有?有没有更好的方法来做我正在做的事情?我是否链接不正确?
顺便说一句,那个文件 ripemd160.c
是库中唯一旁边有头文件的文件,而不是在 include 目录中。我不知道这是否有所作为。
我还尝试在 CMake 中为该库创建另一个模块,但这没有帮助。
请指教。
编辑:需要说明的是,我从未对库中的任何函数进行贴标。我只包含来自该库的 header ,它负责声明。这就是为什么我从未提及 extern "C"
。
已解决:用 extern "C"
包装 include 解决了这个问题。显然图书馆开发人员忘记了这样做。
最佳答案
尝试用 extern "C"声明 ripemd160() 函数。或者你可以简单地通过
extern "C"{ #include "ripemd160.h"}
关于C++ 程序使用 C 库中的损坏符号导致 undefined symbol ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51022634/
我只是有一个更琐碎的问题。 为什么undefined == undefined 返回true,而undefined >= undefined 为false? undefined 等于 undefine
用PHP 7.2编写套接字服务器。根据Firefox 60中的“网络”选项卡,服务器的一些HTTP响应的第一行随机变为undefined undefined undefined。因此,我尝试记录套接字
在 JavaScript 中这是真的: undefined == undefined 但这是错误的: undefined <= undefined 起初我以为<=运算符包含第一个,但我猜它试图将其转换
在回答这个问题 (Difference between [Object, Object] and Array(2)) 时,我在 JavaScript 数组中遇到了一些我以前不知道的东西(具有讽刺意味的
来自https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/of , Note: thi
我正在运行 PHP 脚本并继续收到如下错误: Notice: Undefined variable: my_variable_name in C:\wamp\www\mypath\index.php
我正在运行 PHP 脚本并继续收到如下错误: Notice: Undefined variable: my_variable_name in C:\wamp\www\mypath\index.php
当我添加 到我的 PrimeFaces Mobile 页面,然后我在服务器日志中收到以下警告 WARNING: JSF1064: Unable to find or serve resource, u
我正在运行 PHP 脚本并继续收到如下错误: Notice: Undefined variable: my_variable_name in C:\wamp\www\mypath\index.php
我正在运行 PHP 脚本并继续收到如下错误: Notice: Undefined variable: my_variable_name in C:\wamp\www\mypath\index.php
我正在运行 PHP 脚本并继续收到如下错误: Notice: Undefined variable: my_variable_name in C:\wamp\www\mypath\index.php
我正在运行 PHP 脚本并继续收到如下错误: Notice: Undefined variable: my_variable_name in C:\wamp\www\mypath\index.php
我正在运行 PHP 脚本并继续收到如下错误: Notice: Undefined variable: my_variable_name in C:\wamp\www\mypath\index.php
我正在运行 PHP 脚本并继续收到如下错误: Notice: Undefined variable: my_variable_name in C:\wamp\www\mypath\index.php
我正在运行 PHP 脚本并继续收到如下错误: Notice: Undefined variable: my_variable_name in C:\wamp\www\mypath\index.php
我正在运行 PHP 脚本并继续收到如下错误: Notice: Undefined variable: my_variable_name in C:\wamp\www\mypath\index.php
我正在运行 PHP 脚本并继续收到如下错误: Notice: Undefined variable: my_variable_name in C:\wamp\www\mypath\index.php
我正在运行 PHP 脚本并继续收到如下错误: Notice: Undefined variable: my_variable_name in C:\wamp\www\mypath\index.php
我正在运行 PHP 脚本并继续收到如下错误: Notice: Undefined variable: my_variable_name in C:\wamp\www\mypath\index.php
我正在运行 PHP 脚本并继续收到如下错误: Notice: Undefined variable: my_variable_name in C:\wamp\www\mypath\index.php
我是一名优秀的程序员,十分优秀!