Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / Languages / C++

Minimize the Possibility of Data Corruption when Exporting a Class

5.00/5 (1 vote)
10 Mar 2012CPOL 7.4K  
How to minimize the possibility of data corruption when exporting a class

Introduction

This is a very important tip copied from MSDN about DLL class exporting. Although this can be found in MSDN, not too many novice programmers would be aware of it. Hence, I am posting it as a tip.

The complete article can be found here.

Compiler Warning (level 1) C4251

Visual Studio 2010

Other Versions

'identifier' : class 'type' needs to have DLL-interface to be used by clients of class 'type2'.

To minimize the possibility of data corruption when exporting a class with __declspec(dllexport), ensure that:

  • All your static data is accessed through functions that are exported from the DLL.
  • No inlined methods of your class can modify static data.
  • No inlined methods of your class use CRT functions or other library functions use static data (see Potential Errors Passing CRT Objects Across DLL Boundaries for more information).
  • No methods of your class (regardless of inlining) can use types where the instantiation in the EXE and DLL have static data differences.

History

  • Tip uploaded: 11th March, 2012

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)