首页 > 解决方案 > 从应用程序中获取显式加载的 DLL 的符号

问题描述

我正在修改我的应用程序,以便它可以显式加载 DLL(通过 Windows API)并从 DLL 调用一些函数。但我也需要能够从 DLL 中调用一些应用程序的函数。我只能将函数的头文件提供给 DLL。但我收到 LNK2019 'unresolved external symbol' 错误。

我的想法是否可行?

标签: c++winapidll

解决方案


所以你找到了一种方法来做到这一点,但是你也应该问问自己是否应该这样做。

如果您的可执行文件依赖于 DLL,那么 DLL 不应依赖于该可执行文件。这不仅仅是一个关于原则的问题,也是一个关于避免未来问题的问题。

实现从 DLL 到可执行文件的调用的方法是在 DLL 的头文件中定义函数指针类型和设置器:

typedef void aCallbackType(void);
void setMyCallback(aCallbackType* Cb);

setMyCallbackDLL 中存储该函数指针以供以后调用它。

然后可执行文件可以定义一个函数并将其提供给 DLL:

void myCallback(void) { }
void myProgram(void) {
    setMyCallback(myCallback);
}

推荐阅读