COM里显式调用DLL的问题(欢迎各方人士发表高见,DirectX开发者尤佳!!!)
最近,小弟在写一个DirectShow Filter (一个COM,编译后扩展名为ax,其实就是dll)
我的filter的测试环境是DirectX带的GraphEdit.
一切似乎都很顺利,我的Debug版本取得了巨大成功,测试通过,实现了预定的功能。
然而当我兴致勃勃地编译release版本发布时,问题来了。具体表现如下:
filter加入graphedit的时候出现错误:
"Unhanlded exception in graphedt.exe, 0xc0000000005: Access Violation"
然后,调试器就转向了 41C80000 ???
我对这个问题是一酬莫展,交货的日子越来越近了,我是不可能用调试版本去交货的,调试filter的艰苦岁月俺都熬过来了,而今快成功时却陷在此处,苦也。
请各位高手大侠大哥帮俺支些招,哪怕是分析解决问题的方法也行。
谢谢了。
-----------------------------------------------------------------------
经过进一步的分析,现象更明确,问题范围已经缩小:
在COM里面显示调用dll (LoadLibrary),在debug模式下一切正常,但是在release模式下,LoadLibrary正常,GetProcAddress正常,函数调用也正常,但是随后就会在graphedit里挂掉,这是一个
理论性的问题。
我怀疑,由于debug模式和release模式的地址空间不一样,所以导致
地址访问错误,具体原因不明。