作者slgn0129 (缘由天定分在人为)
看板C_and_CPP
标题Re: [问题] 关於FARPROC及GetProcAddress的问题
时间Fri Dec 4 13:25:36 2009
※ 引述《VictorTom (鬼翼&娃娃鱼)》之铭言:
※ 引述《slgn0129 (缘由天定分在人为)》之铭言:
: ( *[1m *[m 为色码,可以按 Ctrl+V 预览会显示的颜色 )
: ( 未必需要依照此格式,文章条理清楚即可 )
: 遇到的问题: (题意请描述清楚)
: HINSTANCE hDLL = LoadLibrary(TEXT("libGLESv2"));
: FARPROC p2 = GetProcAddress(hDLL,"glCompileShader");
: void (*p)(GLuint);
: p = (void (*) (GLuint)) p2;
: p(shader);
: hDLL有找到位址
: 但是p2却是0x00000000
: 所以p就跟p2一样
: 猜想可能是格式问题 但是不知道怎麽下手修改
: 希望得到的正确结果:
: 能抓到p2的位址
: 程式跑出来的错误结果:
: 存取违规(p=0x00000000)
: 开发平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux)
: VS2005
: 有问题的code: (请善用置底文标色功能)
: FARPROC p2 = GetProcAddress(hDLL,"glCompileShader");
: 补充说明:
: 如果有什麽应该要提供的资讯 小弟没有提供的
: 请各位前辈说一下
: 请谢
恕删...
==
所以问题又回到原点了, 为什麽原po的GetProcAddress()会失败啊?_?
可能是
我gl2platform.h 下面的定义
不是#define GL_APIENTRY
是#define GL_APIENTRY __stdcall
另外
GL_APICALL void GL_APIENTRY glCompileShader(GLuint shader)
{
HINSTANCE hDLL = LoadLibrary(TEXT("libGLESv2"));
FARPROC p2 = GetProcAddress(hDLL,"glCompileShader");
void (*p)(GLuint);
p = (void (*) (GLuint)) p2;
p(shader);
要加的原因 是因为要跑programming guide里面自订的esfunction...
http://www.opengles-book.com/OpenGL_ES_Programming_Guide_v1.0.2.zip
这是官方公开的范例下载
所以一开始我才会说 猜想是格式错误0.0
--
http://www.wretch.cc/blog/ZAS007
月下
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.165.212
1F:推 VictorTom:应该不是platform那个, 那个我也是走到__stdcall, 它有 12/04 13:28
2F:→ VictorTom:一些#if的判断, 但最後会落到__stdcall没有错, 晚点再拿 12/04 13:28
3F:→ VictorTom:你的sample跑跑看@_@" 12/04 13:29
4F:→ VictorTom:再说, 你的问题是连GetProcAddress都拿不回来, 所以还没 12/04 13:30
5F:→ VictorTom:遇到Call Conv的问题才对@_@" 12/04 13:30
6F:→ slgn0129:有可能因为格式不一样 所以找不到glxxx那个文字吗 12/04 13:39
7F:推 VictorTom:不会, 你原文f大也提到这件事了, 你也可以想, 你在做 12/04 13:47
8F:→ VictorTom:GetProcAddress时根本没让它知道Call Conv是什麽@_@" 12/04 13:47
9F:推 VictorTom:我在我上一篇回文加了新的一段code, 就是照您说的抓那个 12/04 14:18
10F:→ VictorTom:Guide里的Ch2那个Hello_Triangle的sample改的, 一样是可 12/04 14:18
11F:→ VictorTom:以正常work, 所以您要不要再check一下或者直接放完整的 12/04 14:19
12F:→ VictorTom:code出来看算了....XDDD 12/04 14:19
13F:→ slgn0129:完整的档案 是指读每一个API的档吗@@? 12/04 14:44
14F:→ slgn0129:还是哪个code@@? 12/04 14:45