2011-05-10 34 views
-1

嗨,所有的VC++和WIndows专家! ;)64位:为什么我的C/C++运行时(CRT)程序集缓存对我的应用程序不可见?

首先,我的背景:Vstudio,C & C++,Windows。(如果你愿意,你可以得到我的技术)。 经过5天的尝试各种可能性,论坛和修复,甚至改变O/S平台,我决定在这里发布(或跳出窗口!)我在AGONy试图解决这个问题,作为它支撑着我的实际开发工作! 。 :)

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

问题/问题: 我正在开发一个32它包含一个名为ASDCP的相当大中型C++库(用于音频/视频编解码器处理) - 它是用PURE C++编写的,并且具有完全内置的对buil的支持在Win32,Linux,MacOS等上运行。

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


现在,我对这个职位的问题是,当我在动态2008年VStudio链接CRT,然后尝试和rnnign加载插件RealStudio-该死的东西根本无法找到并排适用于Microsoft.CRT.VC90的ASSEMBLY CACHE大小!我已经使用了所有的清单文件,将清单文件嵌入到DLL中,在WinSxs程序集缓存中检查(约10次!)版本的CRT,以清除我的清单文件/依赖性需求。

但某种程度上...... RealStudio(RunAs Admiistrator)无法加载我的CRT 9 DLL(尤其是MSVCP90.dll)。我已经在MSDN和其他论坛上花费了15个小时来观看类似的问题和解决方案,并且实施了微软论坛版主推荐的解决方案。但无济于事。

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

HELP!?!?! pleasee ..

为帮助我重新健康而提前深表感谢!

Dinesh

回答

0

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

相关问题