背景
我的解决方案包括两个项目:
- 标准的 Windows 应用程序
- 我的应用程序不直接使用的 DLL ,而是将其注入目标进程
基本上,从我的应用程序的角度来看,DLL 必须满足的唯一要求是存在于我的应用程序的工作目录中。简而言之,我的 DLL 不会导出我的应用程序感兴趣的任何函数。
问题
我想强烈耦合这两个二进制文件。除了在我的应用程序中手动调用之外,我还有哪些选择LoadLibrary
?
如果这太模糊,请告诉我。
编辑
由于似乎没有人“回答”,我最终做了EFraim
建议(见评论)。
我从我的 DLL 中导出了一个虚拟函数,并将 DLL 生成的*.lib
文件作为附加依赖项添加到我的应用程序的链接器属性表中。现在,在运行时,如果缺少 DLL,Windows 会给出一个很好的错误消息并终止执行。额外的好处是,在 IAT 初始化成功后,DLL 映像也会被锁定;这可以防止用户删除之类的事情。