鍍金池/ 問答/C++  網(wǎng)絡(luò)安全/ dlysm 載入的函數(shù)可不可以 cast 到 std::function ?

dlysm 載入的函數(shù)可不可以 cast 到 std::function ?

dlsym 返回的是 void*, 可以不可 cast 到 std::function

比如

// 假設(shè) lib 里的函數(shù)原型為 int func(int);
using FuncType = std::function<int(int)>;

FuncType f = dlsym(libHandle, "func"); // 這樣可以么?

FuncType f = reinterpret_cast<FuncType>(dlsym(libHandle, "func")); // 或者這樣可以么?
回答
編輯回答
糖豆豆

直接cast肯定是不對(duì)的,
正確的寫法是:

using func=int(*)(int);
using FuncType = std::function<int(int)>;
FuncType f{reinterpret_cast<func>(dlsym(libHandle, "func"))};
2018年2月16日 01:24