Windows:如何从可能不存在的 DLL 中获取类型?
我正在编写需要仅存在于 Windows 7 上的 DLL 的代码。但是,我将部署到较旧的平台,因此我想使用该 DLL(如果用户系统上存在该 DLL)。
我可以使用 LoadLibrary()
获取 HMODULE
,并使用 GetProcAddress()
从该 HMODULE 获取方法。这允许我获取该方法,并且它仍然可以编译。但是,如何声明该 DLL 中定义的结构或类的类型并使其编译呢?
I'm writing code that requires a DLL that exists only on Windows 7. However, I will deploy to older platforms, so I want to use the DLL if it exists on the user's system.
I can use LoadLibrary()
to get a HMODULE
, and GetProcAddress()
to get methods from that HMODULE. This allows me to get the method, and it will still compile. But how do I declare a type of struct or class defined in that DLL and have it compile?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
一般来说,您会知道您正在使用什么方法,并且有一个包含您需要定义的类型的头文件。您只需要定义 fn 指针即可将 getprocaddress 的返回值分配给该指针。如果您没有头文件或某些文档,那么您在探索领域将需要进行试验。
Generally you will know what methods you are using and either have a header file with the types that you need defined. You just need to define fn pointers that you can assign the return of getprocaddress to. If you don't have a header file or some documentation you are in discovery land will need to experiment.