-1

嗨,所有 VC++ 和 Windows 专家!;)

首先,我的背景:Vstudio、C & C++、Windows。(如果你愿意,你可以和我一起学习技术)。经过 5 天尝试各种可能性、论坛和修复甚至更改操作系统平台后,我决定在这里发帖(或跳出窗口!)我在 AGONy 试图解决这个问题,因为它是阻止我的实际开发工作!!. :)

Soo.. sceratio 是:出现问题的开发机器:操作系统:带有 SP2 的 Windows Vista 64 位(即使在使用 VMWare 运行的 32 位 XP SP2 虚拟机上发生相同的问题。开发 IDE:带有 SP1 的 Visual Studio 2008已安装。输出二进制类型:.DLL(它的命运是成为一个开发插件。IDE caled RealStudio)

问题/问题:我正在使用 VStudio 2008 开发一个 32 位 C++ DLL。它包含一个相当大的 C++ 库,称为 ASDCP(用于音频/视频编解码器处理)——它是用 PURE C++ 编写的,并且具有完整的内置支持在 Win32、Linux、MacOS 等上构建。

现在 ASDCP 库使用 C++ 标准库(存储在 MSVCP90.dll 和 .lib 文件中)。因此,当我构建自己的插件(DLL)并允许它是调用者应用程序(称为 RealStudio,另一个开发 IDE)时,没有 ASCP 库(因此不需要链接 C++ Std.Libs),它工作正常. 但是当我从 ASDCP 库添加代码,并选择静态链接(/MT)C++ 运行时库,然后加载插件并运行 RealStudio 时,它会因内存泄漏而崩溃——可能是“访问冲突”——可能是由各种 DLL 之间的一些不匹配引起的。


现在,我对这篇文章的问题是,当我在 VStudio 2008 中动态链接 CRT,然后尝试通过 rnnign RealStudio 加载插件时——该死的东西根本无法找到 Microsoft.CRT 的 Side-by-Size ASSEMBLY CACHE .VC90!!我已经处理了所有清单文件,将清单文件嵌入到 DLL 中,检查(大约 10 次!)WinSxs 程序集缓存中的 CRT 版本,反对我的清单文件/依赖项需求。

但不知何故...... RealStudio(RunAs Admiistrator)无法加载我的 CRT 9 DLL(特别是 MSVCP90.dll)。我在 MSDN 和其他论坛上花了大约 15 个小时来查看类似的问题和解决方案,并按照微软论坛版主的建议实施了这些解决方案。但无济于事。

所以..你如何获得一个在 64-Windows(Vista SP2)下运行的 32 位 C++ DLL,以“查看”相关 CRT 依赖项的 Assembl 缓存并加载它??????

帮助!?!?!拜托了。。

提前深深感谢帮助我恢复理智!

迪内什

4

1 回答 1

0

为平台目标 x86 构建您的托管项目。我的意思是,不要为“任何 CPU”构建它。

于 2011-12-16T21:07:58.213 回答