【发布时间】:2011-08-26 11:46:19
【问题描述】:
我想从 DLL 加载特定函数并将其存储在 Boost 函数中。这可能吗?
typedef void (*ProcFunc) (void);
typedef boost::function<void (void)> ProcFuncObj;
ACE_SHLIB_HANDLE file_handle = ACE_OS::dlopen("test.dll", 1);
ProcFunc func = (ProcFunc) ACE_OS::dlsym(file_handle, "func1");
ProcFuncObj fobj = func; //This compiles fine and executes fine
func(); //executes fine
fobj(); //but crashes when called
谢谢, 悟空。
【问题讨论】:
-
我喜欢你在同一个句子中使用“执行良好”和“崩溃”的方式;)
-
你能确认
func不为空吗? -
其实我的意思是下一句像 fobj() 那样调用它会崩溃
-
@Moo-Juice:是的,我看到它是一个有效的函数指针。事实上,调用时它工作正常
-
你确定不需要在 ProcFunc 上指定调用约定吗?
标签: c++ dll boost-function