c++ - 从应用程序中获取显式加载的 DLL 的符号
问题描述
我正在修改我的应用程序,以便它可以显式加载 DLL(通过 Windows API)并从 DLL 调用一些函数。但我也需要能够从 DLL 中调用一些应用程序的函数。我只能将函数的头文件提供给 DLL。但我收到 LNK2019 'unresolved external symbol' 错误。
我的想法是否可行?
解决方案
所以你找到了一种方法来做到这一点,但是你也应该问问自己是否应该这样做。
如果您的可执行文件依赖于 DLL,那么 DLL 不应依赖于该可执行文件。这不仅仅是一个关于原则的问题,也是一个关于避免未来问题的问题。
实现从 DLL 到可执行文件的调用的方法是在 DLL 的头文件中定义函数指针类型和设置器:
typedef void aCallbackType(void);
void setMyCallback(aCallbackType* Cb);
在setMyCallback
DLL 中存储该函数指针以供以后调用它。
然后可执行文件可以定义一个函数并将其提供给 DLL:
void myCallback(void) { }
void myProgram(void) {
setMyCallback(myCallback);
}
推荐阅读
- python - 带有退格问题的 unicode 中的 Python 输入
- jwt - NextAuth Hasura 刷新令牌
- mysql - Laravel查询查找所有注册用户的总视图计数过去7天的每一天
- sequelize.js - 如何在sequelize中按ID排序
- makefile - Make没有意识到它已经完成了
- mysql - 数据库设计:X:X to 1:many vs X:X to 0:many
- javascript - 不带符号的 yup 字符串验证
- python - 如何在 export_graphviz 中调整图形大小?
- react-native - 在 React Native 中使用 FusionAuth
- json - jq - 如何格式化键和值对,然后在 json 中迭代键