我们在客户现场遇到问题;客户使用VS2010运行时(日期:2011年2月19日,版本:10.0.40219.1)构建其应用程序。客户的应用程序使用我们的dll,该dll也是使用VS2010运行时构建的,但版本稍旧。
我们在安装程序中有一个选项,您可以跳过VC Runtime re-distributable的安装,在这里客户会跳过,因为他已经安装了运行时。
这里的问题是,如果客户的应用程序先启动,然后加载我们的DLL,则没有问题。但在另一种情况下,如果客户的应用程序仅加载msvcr100.dll,而不加载msvcp100.dll,然后在加载我们的DLL时,我们会收到错误“R6030 CRT未初始化”
这是否是因为运行时不兼容问题,运行时和应用程序是否应使用完全相同的版本进行编译?
2条答案
按热度按时间pbgvytdp1#
是的!我建议你的程序总是和你构建的CRT一起交付。
但是我想知道这一点。在内部,新的DLL与以前的版本是二进制兼容的。所以,因为你用旧版本构建,新版本“不应该”破坏你的应用程序。
我总是避免这个问题在使用本地安装的VC运行时。
6g8kf2rb2#
我不知道确切的原因,但我发现R6030运行时错误可以通过在某些计算机上将Microsoft IME 2010更改为Microsoft标准IME来解决。它可能与Microsoft Office 2010有关。另外,请取消选中Windows - start - msconfig - service选项卡中的“图像保护服务”。
请参考以下截图。抱歉,截图中的语言是韩语。
Microsoft IME change
Image Protect Service