Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Microsoft Visual C++
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
=== ABI === The Visual C++ compiler [[Application binary interface|ABI]] has historically changed between major compiler releases.<ref>Microsoft MSDN: [http://msdn.microsoft.com/en-us/library/bb531344.aspx Breaking Changes in Visual C++]</ref> This is especially the case for STL containers, where container sizes have varied a lot between compiler releases.<ref>Microsoft MSDN: [http://msdn.microsoft.com/en-us/library/vstudio/hh438470.aspx Containers (Modern C++)]</ref> Microsoft therefore recommends against using C++ interfaces at module boundaries when one wants to enable client code compiled using a different compiler version. Instead of C++, Microsoft recommends using [[C (programming language)|C]]<ref>Microsoft MSDN: [http://msdn.microsoft.com/en-us/library/vstudio/hh438475.aspx Portability At ABI Boundaries (Modern C++)]</ref> or [[Component Object Model|COM]]<ref>Microsoft forum: [http://social.msdn.microsoft.com/Forums/en/vcgeneral/thread/86eda6a7-4d90-4e19-a9d4-6cbe22b661f4 Binary compatibility across Visual C++ versions] {{Webarchive|url=https://archive.today/20130216110824/http://social.msdn.microsoft.com/Forums/en/vcgeneral/thread/86eda6a7-4d90-4e19-a9d4-6cbe22b661f4 |date=2013-02-16 }}</ref> interfaces, which are designed to have a stable ABI between compiler releases. All 14.x MSVC releases have a stable ABI,<ref>docs.microsoft.com: [https://docs.microsoft.com/en-us/cpp/porting/binary-compat-2015-2017? C++ binary compatibility between Visual Studio 2015, 2017, and 2019]</ref> and binaries built with these versions can be mixed in a forwards-compatible manner, noting the following restrictions: * The toolset version used must be equal to or higher than the highest toolset version used to build any linked binaries. * The MSVC Redistributable version must be equal to or higher than the toolset version used by any application component. * Static libraries or object files compiled with /GL (Whole program optimisation) are not binary compatible between versions and must use the exact same toolset.
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)