从可执行文件和DLL加载C运行时库的问题

时间:2011-04-06 17:26:25

标签: c# c++ clr runtime-error dll

我有一个使用.Net 3.5的WPF应用程序,它从以下位置加载C运行时库: C:\ WINDOWS \ winsxs文件\ x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.4926_none_508ed732bcbc0e5a \ MSVCR90.DLL。 我们称之为MyApp.Exe

该文件夹还包括msvcp90.dll和msvcm90.dll。

当我启动某个对话框时,我需要使用CLR加载某个DLL,这是一个C ++ DLL(让我们称之为MyPlugin.dll)。 MyPlugin.dll与MyApp.exe位于同一文件夹中,但是通过使用depends.exe我可以看到它找不到msvcm90.dll或msvcp90.dll。

如果我尝试简单地将msvcm90.dll和msvcp90.dll复制到与MyPlugin.dll相同的文件夹,它会找到DLL但我收到错误R6034“应用程序试图错误地加载C运行时库”

我如何解决这个问题?有没有办法让MyApp.exe只查找当前文件夹中的运行时DLL?

[编辑]

我创建了一个C ++可执行文件(我们称之为CExec.exe),它试图加载MyPlugin.dll,并将其放在MyPlugin.dll和MyApp.exe所在的文件夹中。 CExec.exe能够加载MyPlugin.dll,但MyApp.exe(一个C#应用程序)无法加载MyPlugin.dll。我有一种感觉,我的问题与此有关: http://connect.microsoft.com/VisualStudio/feedback/details/361682/vc9-sp1-generates-manifests-with-the-wrong-version-number

0 个答案:

没有答案