C++将函数从 DLL 加载到 Boost 函数中
我想从 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
谢谢, 戈库尔。
I want to load a particular function from DLL and store it inside the Boost function. Is this possible?
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
Thanks,
Gokul.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您需要注意名称修改和调用约定:
所以,在您的 DLL 中:
然后,在您的 DLL 客户端应用程序中:
我确信这个示例可以构建并运行良好。
You need to take care about names mangling and calling convention:
So, in your DLL:
Then, in your DLL client application:
I'm sure this example builds and runs well.