我正在尝试使用boost dll / shared_library模块从共享库中获取函数地址,并将它们分配给在我的程序中使用的函数指针,但加载的函数地址不正确,并且在程序中使用时会导致分段错误。共享库包含正确的符号地址,因为我可以加载并直接使用dlsym()
正确使用符号。以下是我正在使用的代码:
#include <iostream>
#include <boost/dll/shared_library.hpp>
namespace dll = boost::dll;
int (*add)(int a, int b);
int main ()
{
try
{
dll::shared_library lib ("utils.so");
add = lib.get <typeof(add)> ("add");
}
catch (...)
{
std::cout << "Failed to load library" << std::endl;
}
return 0;
}
有人可以建议我在这里缺少什么,以及使用BOOST从共享库中加载API函数的正确方法。感谢。
答案 0 :(得分:1)
在shared_library::get<T>
中,T
应该是函数类型,而不是指向函数的指针。
add = lib.get <int (int a, int b)>("add");