首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果使用低于VS2015的vc++编译器版本编译,则在DLL中发生访问冲突

如果使用低于VS2015的vc++编译器版本编译,则在DLL中发生访问冲突
EN

Stack Overflow用户
提问于 2017-07-18 22:32:05
回答 1查看 173关注 0票数 0

我已经想了好几个星期了.每当我使用plattform toolset VS2013 (vs120)或更低版本编译我的D3D代理dll时,我在使用这个库的D3D9应用程序中得到一个访问冲突(0xC0000005)。如果我更改为VS2015或VS2017,则不会发生异常。

我的dll只包含DirectX 9接口IDirect3D9和IDirect3DDevice9的重新实现(作为原始代理dll工作)。

我想使用VS2013的原因是我的封闭源代码D3D9应用程序是使用VS2013编译的。如果我理解正确的话,使用不同的VS运行时通常不能正常工作,这可能也是我所有尝试将对D3D9方法的所有调用记录到一个文件中导致运行时错误的原因。

顺便说一下,我用的是Windows 8.1 Pro。

欢迎任何帮助!

EN

回答 1

Stack Overflow用户

发布于 2017-07-18 23:11:08

确保您的动态链接库是使用理想的/LD/LDd (取决于它是调试版本还是发行版)或至少是/MD/MDd编译的,以使用动态链接的运行时,即不要使用/MT/MTd (AFAIK至少在某些情况下默认设置为/MT[d],但我目前不确定默认的动态链接库设置)。

此外,根据应用程序期望的调用约定,您可以尝试更改默认的调用约定:/Gz (标准调用)、/Gr (快速调用)、/Gd (cdecl)。库通常需要stdcall,但MSVC中的默认值是AFAIK cdecl,因此这也可能是问题的来源。

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

https://stackoverflow.com/questions/45169782

复制
相关文章

相似问题

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