我想用 lib.so 运行 C++ 代码并设置“LD_LIBRARY_PATH=/apollo/bazel-bin”但 lib.so 在“/apollo/bazel-bin/python”中,然后我得到了错误不能找到 lib.so。
“LD_LIBRARY_PATH”设置的目录是否会找到它的子目录?我在“/apollo/bazel-bin/a”、“/apollo/bazel-bin/b”和“/apollo/bazel-bin/c”中有一些lib.so,我不想设置3个目录但是“ /apollo/bazel-bin/”?
我想将c++ objcet 成员回调 func传递给一个只有 void*的“c” lib。然后我使用 std::function 来注册回调处理程序。但是当我将 std::function<>* 转换为 void* 时出现问题,似乎当转换为 void* 时 std::function<>* 被破坏了。
下面是测试代码。
#include <iostream>
#include <functional>
class TfLight {
public:
void print(int a) {
std::cout << "TfLight::print " << a << std::endl;
}
};
class Server {
public:
void run(int a) {
std::function<void(int)>* func = reinterpret_cast<std::function<void(int)>*>(ptr);
std::cout << func << std::endl;
(*func)(a);
}
void register(std::function<void(int)> tf) {
std::cout << (&tf) << std::endl;
// f = tf;
setPtr(&tf);
}
void setPtr(void* p) …Run Code Online (Sandbox Code Playgroud)