【发布时间】:2015-05-27 11:04:42
【问题描述】:
我为 AutoCAD 编写插件。如果我编写托管(即 .net)插件,那么我可以使用任何可以与 AutoCAD 使用的 .NET Framework 版本一起使用的 Visual Studio 版本(非常方便):
- AutoCAD 2009 可以使用.NET 3.0、3.5
- AutoCAD 2010 可以使用 .NET 3.5。
- ...
- AutoCAD 2016 可以使用 .NET 4.5、4.5.1
因此,通过 Visual Studio 2013,我可以为 AutoCAD 2009-2016 编写 .net 插件。
但有时我需要为 AutoCAD 编写非托管插件,因为它的托管 .net API 并未完全涵盖非托管 API(ObjectARX SDK)。 ObjectARX 是 C++ 的 API。在这种情况下,我不能为每个 AutoCAD 版本使用相同的 Visual Studio。例如,我将使用 VS 2005 编写 AutoCAD 2009 插件。因此,我在我的虚拟机上安装了 VS 2005-2013。在我看来这很不方便。
我知道,这个问题的存在是因为没有C++函数命名的标准,而且每个版本的VS对于没有external "C"标记的函数都有自己的命名规则。
但是为什么这个标准还不存在呢?它的原因是什么?我确信这个原因是存在的。这种行为不方便不仅对我来说(我问过其他程序员)。但是他们不知道为什么每个新的VS版本都有自己的C++函数命名规则,为什么没有C++函数的命名标准。
谢谢。
【问题讨论】:
-
这可能是因为它链接到不同版本的运行时。
-
准确地说:通过对不同的、不兼容的库使用不同的名称修饰,您会提前失败(程序不会启动)而不是延迟失败(程序可能会在过程中损坏数据)。
标签: c++ visual-studio visual-c++