(作为评论,这可能比完整的答案更好,但是我尘土飞扬的 SO 帐户。还没有足够的代表。)
与 OP 一样,我也使用嵌入式 Python 2.7 和其他一些本机程序集。
使这件事复杂化的是,我的应用程序是一个运行在 64 位 IIS Express (VS2013) 之上的中型 .Net 解决方案。
我尝试了 Dependency Walker(很棒的程序,但已经过时,无法提供帮助)和 Process Monitor(ProcMon——它可能确实找到了一些提示,但即使我使用过滤器,问题也被隐藏在数千个不相关的操作中,更好的过滤器可能会有所帮助)。
然而,非常感谢迈克尔库珀! 您的步骤和 Process Explorer (procexp) 让我很快找到了一个整天都在躲避我的解决方案。
我可以在 Michael 的优秀帖子中添加一些注释。
- 我不仅忽略了(即保持不变)\WinSxS\... 文件夹,还忽略了\System32\... 文件夹。
最终我发现 msvcr90.dll 是从以下位置拉进来的:
- C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\x64
通过我的路径,我发现了上面和另一个类似的目录,它似乎包含 32 位版本。我删除了这两个,重新启动并且......仍然有问题。
因此,我再次按照 Michael 的步骤进行操作,发现另一个msvcr90.dll 正在从以下位置加载:
- C:\Program Files\英特尔\iCLS 客户端\
再次通过我的路径,我找到了上面的目录和这个目录的(x86)版本。所以,我删除了这两个,应用了更改,重新启动了 VS2013 并......
不再有 R6034 错误!
我不禁对英特尔这样做感到沮丧。实际上,我在网上的其他地方找到了关于从路径中删除 iCLS 客户端的提示。我试过了,但症状是一样的,所以,我认为这不是问题。可悲的是,iCLS 客户端和 OpenCL SDK 正在标记我的 iisexpress。如果我有幸删除了其中任何一个,R6034 错误仍然存在。为了解决这个问题,我不得不切除他们两个。
再次感谢 Michael Cooper 和其他所有人的帮助!