编写一个可从 VS 2003 VC++ 代码访问的 dll

Posted

技术标签:

【中文标题】编写一个可从 VS 2003 VC++ 代码访问的 dll【英文标题】:Write a dll that is accessable from VS 2003 VC++ code 【发布时间】:2010-05-26 05:13:25 【问题描述】:

我需要能够用 C# 或 VC++ 编写一个 DLL,该 DLL 可以从用 Visual Studio 2003 VC++ 编写的代码访问。看起来代码是非托管的(使用 * 作为指针)VC++,这个 DLL 需要能够直接插入并被当前代码访问。

DLL 是一个 RS232 驱动程序,需要能够为错误代码返回一个 int,并通过引用将一些测量值传回给调用程序。

我什至可以用 C# 编写这个吗?如果没有,我只能访问 Visual Studio 2005 或 2008。我是否可以在其中编写代码,是否可以从当前代码库调用该 DLL?还是我必须在 ebay 上寻找 VS 2003 的副本?

【问题讨论】:

【参考方案1】:

在 VS2008/2005 中使用 C/C++ 编写的非托管 DLL 应该可以很好地调用 VS2003 C/C++ 项目中的代码。这也可能是阻力最小的路径。如果您的 DLL 引用了 VS2003 不太可能提供的其他 DLL,请确保尽可能重新分发它们,或者以其他方式静态链接。

托管 DLL 也是可能的,但需要一点 glue code to bridge the managed/unmanaged gap。确保针对 VS2003 支持的 .NET 运行时版本 (1.1)。

【讨论】:

您好,感谢您的回复,我唯一遇到的问题是调用代码是 VS 2003 VC++。当前代码必须使用我的 DLL 来访问我将在 VC++ 中编写的几个 RS232 函数。我能否在 VS 2005 或 2008 中编译一个 VC++ 非托管 DLL,可以直接被 VS 2003 代码访问? 是的。 DLL 二进制格式多年来(甚至几十年)一直保持一致。DLL 经常跨创建它们的工具版本工作。

以上是关于编写一个可从 VS 2003 VC++ 代码访问的 dll的主要内容,如果未能解决你的问题,请参考以下文章

VS与VC版本的对应关系

VS版本号和VC版本号之间的关系

Fortran 派生类型包含可从 C 访问的指针

VS发布版本与VC版本对应关系

Visual Studio 中配置openCV问题

VS版本 与 VC版本 的对应关系