从.so调用符号

use*_*724 2 c++ linux shared-libraries

我有一个.so库,并运行nm -gC它.

我看到这样的输出:

0011a011 W void my_fun< unsigned char>(unsigned char*, unsigned char, int)
Run Code Online (Sandbox Code Playgroud)

我可以包含的标头都不包含此功能,但我想从我的cpp文件中调用它.

我该怎么做呢?

小智 5

我可以包含的标头都不包含此功能,

nm手册页:

w ^

w ^

符号是一个弱符号,没有被特别标记为弱对象符号.

所以这是一个微弱的象征.如果没有头文件声明它,则可能无法定义它.你可能仍然会尝试自己声明并调用它以防万一(你需要链接到库):

void my_fun(unsigned char*, unsigned char, int);

// ...

my_fun(foo, bar, baz);
Run Code Online (Sandbox Code Playgroud)

如果这是一个C++函数,那么您不能dlopen()以可移植的方式使用API.