首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用DirectDraw GetProcAddress获取过程地址

使用DirectDraw GetProcAddress获取过程地址
EN

Stack Overflow用户
提问于 2012-03-29 23:02:47
回答 3查看 1K关注 0票数 1

正如IDirectDraw7 7::SetCooperativeLevel方法文档中所述,它声明

必须使用LoadLibrary显式链接到Ddraw.dll,然后使用GetProcAddress访问SetCooperativeLevel方法。

在评论中。但是,当我尝试这样做时(下面的代码),它无法工作。我做错了什么吗?

代码语言:javascript
复制
typedef HRESULT (*pSetCooperativeLevelFunc)(HWND, DWORD);
HMODULE ddrawLib = LoadLibrary(L"ddraw.dll");
pSetCooperativeLevelFunc SCL = (pSetCooperativeLevelFunc) GetProcAddress(
                                 ddrawLib,
                                 "SetCooperativeLevel"
                                 );

if (SCL == NULL) {
    // this happens
    int error = GetLastError(); // 127 (ERROR_PROC_NOT_FOUND)
    printf("Error getting SetCooperativeLevel function address: %i", error);
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-29 23:50:31

SetCooperativeLevel中没有导出的ddraw.dll函数。使用DUMPBIN实用程序并自己检查它。您可以使用DirectDrawCreate/DirectDrawCreateEx和类似的函数来获取GetProcAddress,但是不能提取COM对象的各个方法。

文章很荒谬,没有道理。也许它应该告诉您从ddraw.dll中获取ddraw.dll或类似的东西,但是没有什么理由这样做。

ddraw.lib链接,调用DirectDrawCreate和IDirectDraw7接口提供的访问方法。

如果你对垃圾桶不熟悉,我建议至少学习一下这个工具的基本用法。

票数 2
EN

Stack Overflow用户

发布于 2012-03-29 23:49:14

我觉得那是个文档错误。我已经很久没有使用DirectDraw7了,但我不记得必须动态加载它。它只是IDirectDraw7接口的一个方法,和任何其他方法一样被调用。

票数 1
EN

Stack Overflow用户

发布于 2015-03-15 13:36:58

由于DX9完全从SDK中删除了ddraw.lib,所以需要调用LoadLibrary/GetProcAddress来调用DirectDrawCreate或DirectDrawEnumerate。不幸的是,MSDN弄错了,并将GetProcAddress注释添加到每个DirectDraw函数,甚至是COM接口的方法中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9934824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档