在Visual C++6.0应用程序中使用C++/CLI DLL



我是一名.NET开发人员,在C、C++和C++/CLI方面经验有限。

我们有一个旧程序,它仍在Visual C++6.0中开发,严格使用C语言(没有C++功能)。我被要求为这个应用程序开发一个C++/CLI DLL,它允许应用程序运行一些用.NET编写的例程。我使用的是Visual Studio 2013。

用于开发C应用程序的机器运行的是Windows XP,安装了.NET 4.0。我们已经让它与C++/CLI DLL链接,一切都编译得很好。然而,当我们运行软件时,什么都不会发生。用户界面没有显示,也没有错误消息。这个过程只是在任务管理器中显示了一瞬间,然后就消失了。当我们没有任何错误消息时,有点难以调试。如果我们注释掉DLL函数调用,软件将正常工作。

我们正在使用良好的DLL实践,如extern "C" {...}__declspec(dllimport)__declspec(dllexport),将msvcr120.DLL与我的DLL一起部署,等等。我们在没有C++/CLI支持的情况下设置了一个伪测试DLL,以确保我们正确创建DLL,并且一切正常。

这是否意味着在旧的C程序中不可能使用C++/CLI DLL?

编辑:我在我的开发PC(Windows 8.1)上工作,但没有在带有VC6的Windows XP开发PC上工作。在Windows XP PC上,程序甚至在调用DLL函数之前就崩溃了。

事实证明这是一个操作系统问题。

在我注意到它在我的Windows 8.1 PC上运行得很好之后,我查看了C++/CLI DLL的平台工具集设置。要访问这些,请右键单击项目->属性->配置属性->常规。我的目标是"Visual Studio 2013(v120)",而我本应该瞄准"Visual Studio 2013-Windows XP(v120_XP)"。在我更改该设置后,DLL开始在Windows XP机器上工作。

最新更新