c++ - 非托管 C++ 库 - VS2005 和 VS2008 之间的区别?

标签 c++ visual-studio-2008 visual-studio-2005

首先我会说我是一名 C# 程序员,继承了没有文档的可怕代码。我有一个用托管代码包装的非托管 C++ 库,它在 VS2003 中使用 .Net 1.1 Framework 运行良好。我正在努力让它至少升级到 .Net 2.0。

我有使用“MSVC 8.x”编译的非托管 C++ 库(因此我假设等同于 VS 2005)。我一直在尝试将所有内容迁移到 VS2008,但这个库在运行时仍然存在一些问题。

我的问题是:这个库应该与 VS2008 一起使用吗?或者如果库是用 VC8.x 编译的,我应该在 VS2005 中开发吗?

如有任何想法,我们将不胜感激。谢谢!

最佳答案

它应该可以工作,我希望您在编码方面遇到问题。可能是为 PInvoking 声明不正确的东西在 .NET 1.1 中成功运行但在更高版本中不起作用。

您没有说明您在运行时遇到了什么样的问题,也没有说明您如何访问您的库。例如,您是否将您的库与您的项目一起编译?如果是这样,您能否在您的 C# 项目中打开非托管调试并单步执行遇到问题的代码?你如何调用非托管代码?是通过 PInvoke,还是您管理了 C++ 包装器?

根据我的经验,调用遗留非托管库的最佳解决方案是为使用托管 C++ 编写的遗留库添加一个托管包装库。通过这种方式,您可以为您的库提供一个托管接口(interface),供所有 .NET 语言使用,您不必担心 PInvoke 签名是否正确。

您的项目应如下所示。

C# 应用程序 -> 管理 C++ 包装器 DLL -> 遗留 DLL

关于c++ - 非托管 C++ 库 - VS2005 和 VS2008 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/260096/

相关文章:

c++ - 我们可以在 C++ 类的成员函数中使用 cin>> 吗?

visual-studio - 如何使服务器 block <%%>在Visual Studio中很好地格式化?

.net - VS : Attribute for ignoring missing XML comments when building

c# - 为什么没有将 native DLL 复制到输出目录

c++ - ATL 简单对象向导 - "Object Xxx already exists"错误

c++ - 从 COM 类继承

c++ - C++ (Visual Studio 6) 中 operator< 和 operator[] 的默认返回值是什么?

c++ - 使用模板时:错误:没有匹配的构造函数用于初始化

c++ - dijkstra 的恒权最短路径算法

c++ - 为什么 1 不大于 -0x80000000