3

在我的 Qt 应用程序中,我使用使用 Microsoft.DirectX 库的 COM 包装的 .net 程序集。当我启动我的应用程序时,它会崩溃并在输出中显示以下详细信息

<mda:msg xmlns:mda="http://schemas.microsoft.com/CLR/2004/10/mda">
  <!-- 
       DLL 'D:\MyAppPath\..\Microsoft.DirectX.dll' is
       attempting managed execution inside OS Loader lock. Do not attempt to run
       managed code inside a DllMain or image initialization function since doing so
       can cause the application to hang.
   -->
 <mda:loaderLockMsg break="true"/>
</mda:msg>
myApp.exe has triggered a breakpoint

据我所知,.Net 的 Microsoft.DirectX 库是 1.1 版本,程序集是 4.0,这是问题的根源。

我尝试在简单的 c++ winForms 应用程序中使用这个程序集,通过添加带有以下代码的 app.config 文件解决了同样的问题

 <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0"/>
 </startup>

但 Qt 似乎不支持 app.config 文件。如何在 Qt 配置中设置这个useLegacyV2RuntimeActivationPolicy ?我尝试通过 QSettings 并没有成功。或者 Qt 可能还有其他一些解决方法?

我还尝试禁用 LoaderLock 异常(Debug->Exceptions->Managed Debugging Assistants)。但它也没有成功。

谢谢

4

0 回答 0