我有一个使用 Microsoft Visual Studio 6 在 C++ 上开发的旧应用程序! 此应用程序称为 c++ DLL(使用 Microsoft Visual Studio 6 开发)。
旧版本:[APPLICATION (VS6)] <-> [c++ DLL (VS6) Version1]
对于一项新功能,我在 C# 上开发了一个新库(用于调用 Web 服务,使用带有 Windows 7 的 Visual Studio 2010 开发)和一个基于 C++ 的库包装器(使用带有 Windows 7 的 Visual Studio 2010 开发)。
新版本:[APPLICATION (VS6)] <-> [c++ DLL (VS6) Version2] <-> [c++ wrapper (VS 2010)] <-> [c# (VS 2010)]
我已经安装了:
- Microsoft Visual c++ 2005 Redistributable SP1
- Microsoft Visual c++ 2010 Redistributable SP1
- Microsoft .NET Framework 4.0 客户端
为 .NET C# 库使用“gacutil/i”
我已经为我所有的电脑执行了这个程序,但只有一些电脑不能正常工作。
当我在 [c++ DLL (VS6) Version2] 上更改 [c++ DLL (VS6) Version1] 时,某些电脑出现问题。 我在多台 PC 上安装了这个解决方案,但对于某些 PC,程序崩溃了(在 Windows Vista 上)。 现在我分析了两台计算机,它们给我不同的错误:
- 错误模块 MSVBVM60.dll
- 错误模块 SYSFER.DLL
我哪里错了? 我需要安装一些其他包(运行时)?
谢谢
-------------------------------------------- --------------------------
我更改了库以减少问题!
新版本:[APPLICATION (VS6)] <-> [c++ DLL (VS6) Version2] <-> [c++ wrapper (VS 2010)]
问题总是:
- 错误模块 SYSFER.DLL_unloaded
-------------------------------------------- --------------------------
在控制台上我启动了这个命令:sc config sysplant start= disabled
现在错误被改变了:
- 错误模块 VERSION.dll_unloaded
你有什么想法吗?
谢谢
最佳答案
Sysfer.dll 是一个 Symantec Antivirus dll,它被注入(inject)到该机器上运行的每个应用程序中(这是在 SEP 12.1 中添加的)。一些较旧的遗留应用程序与其不兼容,并在运行时崩溃。这不是您的 C++ 库的问题,而是 Symantec 的问题。
好消息是,您可以在 symantec 中创建异常(exception),以允许旧的遗留应用程序运行。关注this link了解更多。另一个选项是卸载 Symantec Antivirus,但根据您的计算机/客户端,这可能不是一个选项。祝你好运!
关于c# - 不同库之间的奇怪崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25895515/