使用C++/visualc++;6.0应用程序 我是一个.NET开发人员,在C、C++和C++ +CLI方面有着丰富的经验。 我们有一个旧程序,它仍然在Visual C++ 6中开发,严格地用C(无C++特性)。我被要求为这个应用程序开发一个C++/CLI DLL,它允许应用程序运行一些用.NET编写的例程。我正在使用Visual Studio 2013

使用C++/visualc++;6.0应用程序 我是一个.NET开发人员,在C、C++和C++ +CLI方面有着丰富的经验。 我们有一个旧程序,它仍然在Visual C++ 6中开发,严格地用C(无C++特性)。我被要求为这个应用程序开发一个C++/CLI DLL,它允许应用程序运行一些用.NET编写的例程。我正在使用Visual Studio 2013,dll,c++-cli,unmanaged,legacy,Dll,C++ Cli,Unmanaged,Legacy,用于开发C应用程序的计算机运行的是Windows XP,安装了.NET 4.0。我们已经让它与C++/CLI DLL链接,一切都可以正常编译。然而,当我们运行软件时,什么也没有发生。用户界面不显示,并且没有错误消息。这个过程只是在任务管理器中出现了一瞬间,然后就消失了。当我们没有任何错误消息时,调试有点困难。如果我们注释掉DLL函数调用,软件将正常工作 我们正在使用良好的DLL实践,例如extern“C”{…},\uuudeclspec(dllimport),\uudeclspec(dllexp

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

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

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


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

结果表明这是操作系统问题


在我注意到它在我的Windows8.1 PC上运行正常后,我查看了我的C++/CLI DLL平台工具集设置。要获得这些,右键单击项目->属性->配置属性->常规。我的目标是“VisualStudio2013(v120)”,而我本应该是“VisualStudio2013-Windows XP(v120_XP)”。更改该设置后,DLL开始在Windows XP计算机上工作。

使用调试器。不是VS6,调试C++/CLI项目。将start EXE、type设置为mixed,并在dllexport函数上设置断点。@HansPassant感谢您的建议。请参见上面的编辑。