首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >xmlFree GetProcAddress

xmlFree GetProcAddress
EN

Stack Overflow用户
提问于 2013-07-29 09:53:34
回答 2查看 258关注 0票数 0

在Windows环境下,我必须通过LoadLibrary和GetProcAddress动态加载LoadLibrary的DLL接口。除了xmlFree之外,我使用的所有函数指针都已正确加载。

xmlFree不是正常的DLL导出,而是函数指针。因此,“GetProcAddress”上的" xmlFree“将返回指向指向xmlFree函数的指针。

代码语言:javascript
复制
typedef void (*LibXmlFree) (void* mem);
LibXmlFree xmlFree = GetProcAddress( hModule, "xmlFree" );

这样就成功了,但是调用这个函数将失败,因为xmlFree没有指向真正的函数。

如何创建指向DLL的xmlFree(void*)导出的正确指针?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-29 09:53:34

要分配真正的xmlFree指针,您必须取消引用GetProcAddress返回的指针。

强制转换的第一部分指定结果类型,第二部分使用适当的类型规范取消它。

代码语言:javascript
复制
xmlFree = (void (__cdecl *)(void *))    *((void (__cdecl **)(void *)) GetProcAddress( hModule, "xmlFree" ));

同样的情况也适用于libxml的其他函数指针(malloc、realloc和友人)。

票数 0
EN

Stack Overflow用户

发布于 2013-08-07 11:28:29

有一个函数可以获得地址xmlFree:

代码语言:javascript
复制
xmlGlobalState xmlMem = {};
xmlMemGet(  &xmlMem.xmlFree,
            &xmlMem.xmlMalloc,
            &xmlMem.xmlRealloc,
            &xmlMem.xmlMemStrdup
            );
xmlMem.xmlFree( result );

我也遇到了类似的问题,xmlFree是NULL,而在mingw下编译。实际上,xmlFree()在SIGSEGV中失败了。

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

https://stackoverflow.com/questions/17920927

复制
相关文章

相似问题

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