Windows 7访问冲突

时间:2018-05-10 18:17:12

标签: c# c++ boost clr

我正在编写一个包含一组GUI并使用C ++ CLR包装器DLL的C#应用​​程序。结构是这样的:

C#APP - > C ++ / CLR DLL - > C ++ Native Code静态库

我可以在我的开发计算机(Windows Server 2012)和Windows 10计算机上运行该应用程序。但是在Windows 7上,当应用程序尝试加载DLL时,它会因访问冲突异常而崩溃。我无法弄清楚我的DLL中导致崩溃的原因以及为什么它只在Windows 7上。所有东西都是用64位编译的。另外我认为它可能与我在C ++静态库中使用的boost库有关,但我不确定为什么它只会在Windows 7中引发异常。

编辑:

所以我一直在做更多调试,问题发生在LoadLibrary(“myDll.dll”)而不是任何初始化。它仍然只发生在Windows 7而不是Windows 10上。

1 个答案:

答案 0 :(得分:0)

问题在于提升线程。我的静态lib使用内部使用boost线程的boost库。为了解决这个问题,我在我的静态库和C ++ / cli包装器dll中添加了命令行define /DBOOST_THREAD_DYN_LINK。这意味着我必须包含boost线程,计时器和系统的dll文件以及我自己的dll。为什么这只发生在Windows 7而不是10我不确定,但我猜它与Windows 7上的内核有关,以及它如何处理boost线程的工作方式。