diff --git a/Type.h b/Type.h
index 44282e3e10192501304a90c9c1364a7b71df6392..364e4196e767b01929f67cec4a24f4e124f6882d 100644
--- a/Type.h
+++ b/Type.h
@@ -11,16 +11,16 @@ using namespace std;
 /**
  * Run Time Type Inforamtion Class
  */
-class DLLEXPORT Type {
+class Type {
 public:
-	Type (const string & type_name, const Type * par_type );
-	~Type();
+	NIFLIB_API Type (const string & type_name, const Type * par_type );
+	NIFLIB_API ~Type();
 
-	string GetTypeName() const;
+	NIFLIB_API string GetTypeName() const;
 
-	bool IsSameType ( const Type & compare_to ) const;
-	bool IsDerivedType ( const Type & compare_to ) const;
-	bool operator<( const Type & compare_to ) const;
+	NIFLIB_API bool IsSameType ( const Type & compare_to ) const;
+	NIFLIB_API bool IsDerivedType ( const Type & compare_to ) const;
+	NIFLIB_API bool operator<( const Type & compare_to ) const;
 private:
 	string name;
 	const Type * base_type;
diff --git a/gen/AVObject.h b/gen/AVObject.h
index 95f5b5ed417f1ee53973dc33150327347cb7e866..daf775fba4553c1e031a57c2192abe0b32eb6eaa 100644
--- a/gen/AVObject.h
+++ b/gen/AVObject.h
@@ -13,7 +13,7 @@ class NiAVObject;
 /*!
  * Used in NiDefaultAVObjectPalette.
  */
-struct DLLEXPORT AVObject {
+struct NIFLIB_API AVObject {
 	/*! Default Constructor */
 	AVObject();
 	/*! Default Destructor */
diff --git a/gen/Bones.h b/gen/Bones.h
index fb327999a53d6ed14533345a2370b75bb14b77c8..8834b7748c451635cd0fd0fd3791d4871b1a70da 100644
--- a/gen/Bones.h
+++ b/gen/Bones.h
@@ -14,7 +14,7 @@ class NiNode;
  * This is a list of bone influences.  It points to blocks higher in the
  * hierarchy so ints are used to represent the indices.
  */
-struct DLLEXPORT Bones {
+struct NIFLIB_API Bones {
 	/*! Default Constructor */
 	Bones();
 	/*! Default Destructor */
diff --git a/gen/BoundingBox.h b/gen/BoundingBox.h
index db067df45f3d19831781beccba0703528bfab913..697c7465a1fcf6119963ef17aef07692de7686b6 100644
--- a/gen/BoundingBox.h
+++ b/gen/BoundingBox.h
@@ -10,7 +10,7 @@ All rights reserved.  Please see niflib.h for licence. */
 /*!
  * Bounding box.
  */
-struct DLLEXPORT BoundingBox {
+struct NIFLIB_API BoundingBox {
 	/*! Default Constructor */
 	BoundingBox();
 	/*! Default Destructor */
diff --git a/gen/ByteArray.h b/gen/ByteArray.h
index 7377623ed9ffce8cd6e9365cddb86154edde6cce..535151c21bb52ef632fa1f32e1594c49e2101ef7 100644
--- a/gen/ByteArray.h
+++ b/gen/ByteArray.h
@@ -10,7 +10,7 @@ All rights reserved.  Please see niflib.h for licence. */
 /*!
  * An array of bytes.
  */
-struct DLLEXPORT ByteArray {
+struct NIFLIB_API ByteArray {
 	/*! Default Constructor */
 	ByteArray();
 	/*! Default Destructor */
diff --git a/gen/ControllerLink.h b/gen/ControllerLink.h
index 31935e936845e86fbe62da3f96849d81aeb91b03..e65fda6d0ece0f29171c4ce6c82a36105fe189dc 100644
--- a/gen/ControllerLink.h
+++ b/gen/ControllerLink.h
@@ -18,7 +18,7 @@ class NiStringPalette;
  * that contains the name), and a sequence of interpolators that apply to
  * this controllable block, via links.
  */
-struct DLLEXPORT ControllerLink {
+struct NIFLIB_API ControllerLink {
 	/*! Default Constructor */
 	ControllerLink();
 	/*! Default Destructor */
diff --git a/gen/Footer.h b/gen/Footer.h
index 6d58dce2528bd90e5b1fa6327e49e68443bae90c..2b223aecf82a68ec81809c018f8cbea6b14e613e 100644
--- a/gen/Footer.h
+++ b/gen/Footer.h
@@ -14,7 +14,7 @@ class NiAVObject;
 /*!
  * The NIF file footer.
  */
-struct DLLEXPORT Footer {
+struct NIFLIB_API Footer {
 	/*! Default Constructor */
 	Footer();
 	/*! Default Destructor */
diff --git a/gen/FurniturePosition.h b/gen/FurniturePosition.h
index e8e5ed12d16417957a1d4cec4496a63e11c90f4c..d70ea88db4ebd176ac3e6b6c47c085972cfb5c38 100644
--- a/gen/FurniturePosition.h
+++ b/gen/FurniturePosition.h
@@ -10,7 +10,7 @@ All rights reserved.  Please see niflib.h for licence. */
 /*!
  * Describes a furniture position?
  */
-struct DLLEXPORT FurniturePosition {
+struct NIFLIB_API FurniturePosition {
 	/*! Default Constructor */
 	FurniturePosition();
 	/*! Default Destructor */
diff --git a/gen/Header.h b/gen/Header.h
index 0d07cbcf94502a992b158c2a7f3dca5344c5b487..0c0fc722b73d728343c4a533f98da3f0b540f4c5 100644
--- a/gen/Header.h
+++ b/gen/Header.h
@@ -12,7 +12,7 @@ All rights reserved.  Please see niflib.h for licence. */
 /*!
  * The NIF file header.
  */
-struct DLLEXPORT Header {
+struct NIFLIB_API Header {
 	/*! Default Constructor */
 	Header();
 	/*! Default Destructor */
diff --git a/gen/KeyGroup.h b/gen/KeyGroup.h
index b058f0c10a1bd7a04e707fa6abbc7f2d7caa5246..e1f9cfa972790315a21aec5bc43c47c78f27a235 100644
--- a/gen/KeyGroup.h
+++ b/gen/KeyGroup.h
@@ -12,7 +12,7 @@ All rights reserved.  Please see niflib.h for licence. */
  * rotations).
  */
 template <class T >
-struct DLLEXPORT KeyGroup {
+struct NIFLIB_API KeyGroup {
 	/*!
 	 * Number of keys in the array.
 	 */
diff --git a/gen/LODRange.h b/gen/LODRange.h
index 3318612259467811b5df3bb4f4bdc5b1d8b17c60..caf580d72fcd4e0ba9e9aa1a9a7b6b04a45cb021 100644
--- a/gen/LODRange.h
+++ b/gen/LODRange.h
@@ -10,7 +10,7 @@ All rights reserved.  Please see niflib.h for licence. */
 /*!
  * The distance range where a specific level of detail applies.
  */
-struct DLLEXPORT LODRange {
+struct NIFLIB_API LODRange {
 	/*! Default Constructor */
 	LODRange();
 	/*! Default Destructor */
diff --git a/gen/LimitedHingeDescriptor.h b/gen/LimitedHingeDescriptor.h
index 5816d655006488b0dab67389b862cc234ac5bfdd..0e24fd01d1069c57f1b3ee391b26bb475c78fe08 100644
--- a/gen/LimitedHingeDescriptor.h
+++ b/gen/LimitedHingeDescriptor.h
@@ -10,7 +10,7 @@ All rights reserved.  Please see niflib.h for licence. */
 /*!
  * 
  */
-struct DLLEXPORT LimitedHingeDescriptor {
+struct NIFLIB_API LimitedHingeDescriptor {
 	/*! Default Constructor */
 	LimitedHingeDescriptor();
 	/*! Default Destructor */
diff --git a/gen/MatchGroup.h b/gen/MatchGroup.h
index 682cf1da05d27fed6eac03565540e214f0b7c34c..88a156af062ff95c37e01f5be606083bb64dd79a 100644
--- a/gen/MatchGroup.h
+++ b/gen/MatchGroup.h
@@ -10,7 +10,7 @@ All rights reserved.  Please see niflib.h for licence. */
 /*!
  * Group of vertex indices of vertices that match.
  */
-struct DLLEXPORT MatchGroup {
+struct NIFLIB_API MatchGroup {
 	/*! Default Constructor */
 	MatchGroup();
 	/*! Default Destructor */
diff --git a/gen/MipMap.h b/gen/MipMap.h
index edba06192598171a4b966ce0d5870fd1d3da6504..067cd6bcb3e9bab8ba1a55413d6d1a5ddfedf572 100644
--- a/gen/MipMap.h
+++ b/gen/MipMap.h
@@ -10,7 +10,7 @@ All rights reserved.  Please see niflib.h for licence. */
 /*!
  * Description of a MipMap within a NiPixelData block.
  */
-struct DLLEXPORT MipMap {
+struct NIFLIB_API MipMap {
 	/*! Default Constructor */
 	MipMap();
 	/*! Default Destructor */
diff --git a/gen/Morph.h b/gen/Morph.h
index 6bfa1b845ec1e624b37f6ef2a247183e9e3a29a1..2ab605323bc599400811df5fcfb72048586a8100 100644
--- a/gen/Morph.h
+++ b/gen/Morph.h
@@ -10,7 +10,7 @@ All rights reserved.  Please see niflib.h for licence. */
 /*!
  * Geometry morphing data component.
  */
-struct DLLEXPORT Morph {
+struct NIFLIB_API Morph {
 	/*! Default Constructor */
 	Morph();
 	/*! Default Destructor */
diff --git a/gen/NodeGroup.h b/gen/NodeGroup.h
index 690f9ec8be6fabb7ecafa2b2c19401c228e5bc09..8eb6ae8306347b32b191b8fccd63ae3df96f77b4 100644
--- a/gen/NodeGroup.h
+++ b/gen/NodeGroup.h
@@ -13,7 +13,7 @@ class NiNode;
 /*!
  * A group of NiNodes references.
  */
-struct DLLEXPORT NodeGroup {
+struct NIFLIB_API NodeGroup {
 	/*! Default Constructor */
 	NodeGroup();
 	/*! Default Destructor */
diff --git a/gen/Particle.h b/gen/Particle.h
index 58a0f49a2d1a68016886679dd25358d9d560c142..e44c2e742a0402b9268914bcc5ea4f0b6e651114 100644
--- a/gen/Particle.h
+++ b/gen/Particle.h
@@ -10,7 +10,7 @@ All rights reserved.  Please see niflib.h for licence. */
 /*!
  * particle array entry
  */
-struct DLLEXPORT Particle {
+struct NIFLIB_API Particle {
 	/*! Default Constructor */
 	Particle();
 	/*! Default Destructor */
diff --git a/gen/QuaternionXYZW.h b/gen/QuaternionXYZW.h
index 8dfbe074d3017cda5b9e54b294ca3e9020b26a31..55684223856ab116f1656337a0281055878af17b 100644
--- a/gen/QuaternionXYZW.h
+++ b/gen/QuaternionXYZW.h
@@ -10,7 +10,7 @@ All rights reserved.  Please see niflib.h for licence. */
 /*!
  * A quaternion as it appears in the havok blocks.
  */
-struct DLLEXPORT QuaternionXYZW {
+struct NIFLIB_API QuaternionXYZW {
 	/*! Default Constructor */
 	QuaternionXYZW();
 	/*! Default Destructor */
diff --git a/gen/RagDollDescriptor.h b/gen/RagDollDescriptor.h
index 246f8fbce1be02570fbd002b20fdf9ed15b2228c..9e83ec5bc8005d9dcc95acdf7f4d69170cc57b34 100644
--- a/gen/RagDollDescriptor.h
+++ b/gen/RagDollDescriptor.h
@@ -10,7 +10,7 @@ All rights reserved.  Please see niflib.h for licence. */
 /*!
  * 
  */
-struct DLLEXPORT RagDollDescriptor {
+struct NIFLIB_API RagDollDescriptor {
 	/*! Default Constructor */
 	RagDollDescriptor();
 	/*! Default Destructor */
diff --git a/gen/RotationKeyArray.h b/gen/RotationKeyArray.h
index 79cc368916547af16d3f3a304072a777c64c5957..c07c0269850da22d112aafc6ed0be78826e8ddd5 100644
--- a/gen/RotationKeyArray.h
+++ b/gen/RotationKeyArray.h
@@ -11,7 +11,7 @@ All rights reserved.  Please see niflib.h for licence. */
  * Rotation key array.
  */
 template <class T >
-struct DLLEXPORT RotationKeyArray {
+struct NIFLIB_API RotationKeyArray {
 	/*!
 	 * Number of keys.
 	 */
diff --git a/gen/ShaderTexDesc.h b/gen/ShaderTexDesc.h
index 4c29a1b358313c4d750e4d7209c5f005e318d560..e837edb7731ff04d1d65531c67ee9b2317cd4c55 100644
--- a/gen/ShaderTexDesc.h
+++ b/gen/ShaderTexDesc.h
@@ -11,7 +11,7 @@ All rights reserved.  Please see niflib.h for licence. */
 /*!
  * An extended texture description for shader textures.
  */
-struct DLLEXPORT ShaderTexDesc {
+struct NIFLIB_API ShaderTexDesc {
 	/*! Default Constructor */
 	ShaderTexDesc();
 	/*! Default Destructor */
diff --git a/gen/ShortString.h b/gen/ShortString.h
index 432a86c30c81015d7ba6c96cd536ff1d0eaa3c5a..66f9502528fea7ae8263cad39c3941145d8aaa7a 100644
--- a/gen/ShortString.h
+++ b/gen/ShortString.h
@@ -11,7 +11,7 @@ All rights reserved.  Please see niflib.h for licence. */
  * Another string format, for short strings.  Specific to Bethesda-
  * specific header tags.
  */
-struct DLLEXPORT ShortString {
+struct NIFLIB_API ShortString {
 	/*! Default Constructor */
 	ShortString();
 	/*! Default Destructor */
diff --git a/gen/SkinData.h b/gen/SkinData.h
index a484a11c1bd022fea90b53f0594fbcbb77c55974..aa0cb209fe85ece61cf1b2f9f49adc2987f26c3d 100644
--- a/gen/SkinData.h
+++ b/gen/SkinData.h
@@ -11,7 +11,7 @@ All rights reserved.  Please see niflib.h for licence. */
 /*!
  * Skinning data component.
  */
-struct DLLEXPORT SkinData {
+struct NIFLIB_API SkinData {
 	/*! Default Constructor */
 	SkinData();
 	/*! Default Destructor */
diff --git a/gen/SkinPartition.h b/gen/SkinPartition.h
index 4dcc9eb059887c1513dc2ad9e6c72f22c58c2e51..a321ca4e26bd04bcf86b4d0af77bc16f6bc95cf7 100644
--- a/gen/SkinPartition.h
+++ b/gen/SkinPartition.h
@@ -11,7 +11,7 @@ All rights reserved.  Please see niflib.h for licence. */
  * Skinning data for a submesh, optimized for hardware skinning. Part of
  * NiSkinPartition.
  */
-struct DLLEXPORT SkinPartition {
+struct NIFLIB_API SkinPartition {
 	/*! Default Constructor */
 	SkinPartition();
 	/*! Default Destructor */
diff --git a/gen/SkinShape.h b/gen/SkinShape.h
index b66fc298d0d48a63614803f8a451107b907e441d..9e84582cf340aea382d4ef6b02d21f360294d289 100644
--- a/gen/SkinShape.h
+++ b/gen/SkinShape.h
@@ -14,7 +14,7 @@ class NiSkinInstance;
 /*!
  * Reference to shape and skin instance.
  */
-struct DLLEXPORT SkinShape {
+struct NIFLIB_API SkinShape {
 	/*! Default Constructor */
 	SkinShape();
 	/*! Default Destructor */
diff --git a/gen/SkinShapeGroup.h b/gen/SkinShapeGroup.h
index e9565480aba9d27c78ad9592aafa34fe22c4a8c1..250c0c649c8e7ca69811344495f497d5e3df49b8 100644
--- a/gen/SkinShapeGroup.h
+++ b/gen/SkinShapeGroup.h
@@ -11,7 +11,7 @@ All rights reserved.  Please see niflib.h for licence. */
 /*!
  * Unknown.
  */
-struct DLLEXPORT SkinShapeGroup {
+struct NIFLIB_API SkinShapeGroup {
 	/*! Default Constructor */
 	SkinShapeGroup();
 	/*! Default Destructor */
diff --git a/gen/SkinWeight.h b/gen/SkinWeight.h
index c974699cdb60931205e51d3fc1ac718c4c183520..2dfafae96a210a8f42af8cc75252505525056ca8 100644
--- a/gen/SkinWeight.h
+++ b/gen/SkinWeight.h
@@ -10,7 +10,7 @@ All rights reserved.  Please see niflib.h for licence. */
 /*!
  * A weighted vertex.
  */
-struct DLLEXPORT SkinWeight {
+struct NIFLIB_API SkinWeight {
 	/*! Default Constructor */
 	SkinWeight();
 	/*! Default Destructor */
diff --git a/gen/StringPalette.h b/gen/StringPalette.h
index f8098d77040d5afc69e02d3fa00115db8314e492..9f3a9c6ac7bdbbc42a1eb535e463de36c7fc453f 100644
--- a/gen/StringPalette.h
+++ b/gen/StringPalette.h
@@ -10,7 +10,7 @@ All rights reserved.  Please see niflib.h for licence. */
 /*!
  * A list of \\0 terminated strings.
  */
-struct DLLEXPORT StringPalette {
+struct NIFLIB_API StringPalette {
 	/*! Default Constructor */
 	StringPalette();
 	/*! Default Destructor */
diff --git a/gen/TBC.h b/gen/TBC.h
index 9a224229292bc37d68e32372c445112ba058979c..fa972d7524f66e1c53feb80e20b4f065aa91969a 100644
--- a/gen/TBC.h
+++ b/gen/TBC.h
@@ -10,7 +10,7 @@ All rights reserved.  Please see niflib.h for licence. */
 /*!
  * Tension, bias, continuity.
  */
-struct DLLEXPORT TBC {
+struct NIFLIB_API TBC {
 	/*! Default Constructor */
 	TBC();
 	/*! Default Destructor */
diff --git a/gen/TexDesc.h b/gen/TexDesc.h
index 7bc38d20a0a65a9e0b7a9f0c42540953beb69ac0..12fd17d415b3c212451e23543710ffb4167d44cc 100644
--- a/gen/TexDesc.h
+++ b/gen/TexDesc.h
@@ -13,7 +13,7 @@ class NiSourceTexture;
 /*!
  * Texture description.
  */
-struct DLLEXPORT TexDesc {
+struct NIFLIB_API TexDesc {
 	/*! Default Constructor */
 	TexDesc();
 	/*! Default Destructor */
diff --git a/gen/TexSource.h b/gen/TexSource.h
index 31722499eb9219e0fc468baa21df1524712c7c8a..22f1a2376353f8d723cf0cd6641718711c27cd03 100644
--- a/gen/TexSource.h
+++ b/gen/TexSource.h
@@ -14,7 +14,7 @@ class NiPixelData;
 /*!
  * A texture source.
  */
-struct DLLEXPORT TexSource {
+struct NIFLIB_API TexSource {
 	/*! Default Constructor */
 	TexSource();
 	/*! Default Destructor */
diff --git a/gen/hkTriangle.h b/gen/hkTriangle.h
index fabe9be8f2f587f5884bdff22cfa162105748052..b897b8ad9d9dacc5708ed9fb4bbabc2207ac30a3 100644
--- a/gen/hkTriangle.h
+++ b/gen/hkTriangle.h
@@ -10,7 +10,7 @@ All rights reserved.  Please see niflib.h for licence. */
 /*!
  * A triangle with extra data used for physics.
  */
-struct DLLEXPORT hkTriangle {
+struct NIFLIB_API hkTriangle {
 	/*! Default Constructor */
 	hkTriangle();
 	/*! Default Destructor */
diff --git a/nif_math.h b/nif_math.h
index 80059e89cf8f3fbb11b7e56e2665666f523efc4b..950eced1d605ce5912e06d7f72ebb2a876e096e9 100644
--- a/nif_math.h
+++ b/nif_math.h
@@ -29,7 +29,7 @@ struct Float4;
 struct Matrix44;
 
 /*! Stores 2D texture coordinates – two floating point variables, u and v. */
-struct DLLEXPORT TexCoord {
+struct NIFLIB_API TexCoord {
 	float u; /*!< The U value in this coordinate pair. */ 
 	float v; /*!< The V value in this coordinate pair. */ 
 
@@ -56,7 +56,7 @@ struct DLLEXPORT TexCoord {
 };
 
 /*! Represents a triangle face formed between three vertices referenced by number */
-struct DLLEXPORT Triangle {
+struct NIFLIB_API Triangle {
 	short v1; /*!< The index of the first vertex. */ 
 	short v2; /*!< The index of the second vertex. */ 
 	short v3; /*!< The index of the third vertex. */ 
@@ -109,7 +109,7 @@ struct DLLEXPORT Triangle {
 };
 
 /*!Represents a position or direction in 3D space*/
-struct DLLEXPORT Vector3 {
+struct NIFLIB_API Vector3 {
 	float x; /*!< The X component of this vector. */ 
 	float y; /*!< The Y component of this vector. */ 
 	float z; /*!< The Z component of this vector. */ 
@@ -240,7 +240,7 @@ struct DLLEXPORT Vector3 {
 };
 
 /* Stores two floating point numbers.  Used as a row of a Matrix22 */
-struct DLLEXPORT Float2 {
+struct NIFLIB_API Float2 {
 	float data[2]; /*!< The two floating point numbers stored as an array. */ 
 	
 	/*! The bracket operator makes it possible to use this structure like a C++ array.
@@ -299,15 +299,15 @@ struct Matrix22 {
 	 * \param n The index into the row array.  Should be 0 or 1.
 	 * \return The Float2 structure for the given row index by reference so it can be read or set via the bracket operator.
 	 */
-	DLLEXPORT Float2 & operator[](int n) {
+	NIFLIB_API Float2 & operator[](int n) {
 		return rows[n];
 	}
-	DLLEXPORT const Float2 & operator[](int n) const {
+	NIFLIB_API const Float2 & operator[](int n) const {
 		return rows[n];
 	}
 
 	/*! Default Constructor */
-	DLLEXPORT Matrix22();
+	NIFLIB_API Matrix22();
 
 	/*! This constructor can be used to set all values in this matrix during initialization
 	 * \param m11 The value to set at row 1, column 1.
@@ -315,7 +315,7 @@ struct Matrix22 {
 	 * \param m21 The value to set at row 2, column 1.
 	 * \param m22 The value to set at row 2, column 2.
 	 */
-	DLLEXPORT Matrix22(
+	NIFLIB_API Matrix22(
 		float m11, float m12,
 		float m21, float m22
 	) {
@@ -329,7 +329,7 @@ struct Matrix22 {
 	 * \param m21 The value to set at row 2, column 1.
 	 * \param m22 The value to set at row 2, column 2.
 	 */
-	DLLEXPORT void Set(
+	NIFLIB_API void Set(
 		float m11, float m12,
 		float m21, float m22
 	) {
@@ -337,10 +337,10 @@ struct Matrix22 {
 		rows[1][0] = m21; rows[1][1] = m22;
 	}
 
-	DLLEXPORT Quaternion AsQuaternion();
+	NIFLIB_API Quaternion AsQuaternion();
 
 	//Python Operator Overloads
-	DLLEXPORT Float2 & __getitem__(int n) {
+	NIFLIB_API Float2 & __getitem__(int n) {
 		if (n > 1 || n < 0)
 			throw std::out_of_range("Index out of range for MatrixRow3");
         return rows[n];
@@ -348,7 +348,7 @@ struct Matrix22 {
 };
 
 /* Stores three floating point numbers.  Used as a row of a Matrix33 and to store the data in attr_vector3 and attr_color3 type attributes. */
-struct DLLEXPORT Float3 {
+struct NIFLIB_API Float3 {
 	float data[3]; /*!< The three floating point numbers stored as an array. */ 
 
 	/*! The bracket operator makes it possible to use this structure like a C++ array.
@@ -411,15 +411,15 @@ struct Matrix33 {
 	 * \param n The index into the row array.  Should be 0, 1, or 2.
 	 * \return The Float3 structure for the given row index by reference so it can be read or set via the bracket operator.
 	 */
-	DLLEXPORT Float3 & operator[](int n) {
+	NIFLIB_API Float3 & operator[](int n) {
 		return rows[n];
 	}
-	DLLEXPORT const Float3 & operator[](int n) const {
+	NIFLIB_API const Float3 & operator[](int n) const {
 		return rows[n];
 	}
 
 	/*! Default constructor.   Initializes matrix to identity.  */
-	DLLEXPORT Matrix33();
+	NIFLIB_API Matrix33();
 
 	/*! This constructor can be used to set all values in this matrix during initialization
 	 * \param m11 The value to set at row 1, column 1.
@@ -432,7 +432,7 @@ struct Matrix33 {
 	 * \param m32 The value to set at row 3, column 2.
 	 * \param m33 The value to set at row 3, column 3.
 	 */
-	DLLEXPORT Matrix33(
+	NIFLIB_API Matrix33(
 		float m11, float m12, float m13,
 		float m21, float m22, float m23,
 		float m31, float m32, float m33
@@ -453,7 +453,7 @@ struct Matrix33 {
 	 * \param m32 The value to set at row 3, column 2.
 	 * \param m33 The value to set at row 3, column 3.
 	 */
-	DLLEXPORT void Set(
+	NIFLIB_API void Set(
 		float m11, float m12, float m13,
 		float m21, float m22, float m23,
 		float m31, float m32, float m33
@@ -466,22 +466,22 @@ struct Matrix33 {
 	/*! Returns a quaternion representation of the rotation stored in this matrix. 
 	 * \return A quaternion with an equivalent rotation to the one stored in this matrix.
 	 */
-	DLLEXPORT Quaternion AsQuaternion();
+	NIFLIB_API Quaternion AsQuaternion();
 
 	/*! Calculates the determinant of this matrix.
 	 * \return The determinant of this matrix.
 	 */
-	DLLEXPORT float Determinant() const;
+	NIFLIB_API float Determinant() const;
 
 	//Undocumented
-	DLLEXPORT void AsFloatArr( float out[3][3] ) {
+	NIFLIB_API void AsFloatArr( float out[3][3] ) {
 		out[0][0] = rows[0][0]; out[0][1] = rows[0][1]; out[0][2] = rows[0][2];
 		out[1][0] = rows[1][0]; out[1][1] = rows[1][1]; out[1][2] = rows[1][2];
 		out[2][0] = rows[2][0]; out[2][1] = rows[2][1]; out[2][2] = rows[2][2];
 	}
 
 	//Python Operator Overloads
-	DLLEXPORT Float3 & __getitem__(int n) {
+	NIFLIB_API Float3 & __getitem__(int n) {
 		if (n > 2 || n < 0)
 			throw std::out_of_range("Index out of range for MatrixRow3");
         return rows[n];
@@ -489,7 +489,7 @@ struct Matrix33 {
 };
 
 /* Stores four floating point numbers.  Used as a row of a Matrix44. */
-struct DLLEXPORT Float4 {
+struct NIFLIB_API Float4 {
 	float data[4]; /*!< The four floating point numbers stored as an array. */ 
 
 	/*! The bracket operator makes it possible to use this structure like a C++ array.
@@ -556,20 +556,20 @@ struct Matrix44 {
 	 * \param n The index into the row array.  Should be 0, 1, 2, or 3.
 	 * \return The Float4 structure for the given row index by reference so it can be read or set via the bracket operator.
 	 */
-	DLLEXPORT Float4 & operator[](int n) {
+	NIFLIB_API Float4 & operator[](int n) {
 		return rows[n];
 	}
-	DLLEXPORT Float4 const & operator[](int n) const {
+	NIFLIB_API Float4 const & operator[](int n) const {
 		return rows[n];
 	}
 
 	/*! Default constructor. Initializes Matrix to Identity. */
-	DLLEXPORT Matrix44();
+	NIFLIB_API Matrix44();
 
 	/*! Copy constructor.  Initializes Matrix to another Matrix44.
 	 * \param The matrix to initialize this one to. 
 	 */
-	DLLEXPORT Matrix44( const Matrix44 & m ) { memcpy(rows, m.rows, sizeof(Float4) * 4); }
+	NIFLIB_API Matrix44( const Matrix44 & m ) { memcpy(rows, m.rows, sizeof(Float4) * 4); }
 
 	/*! This constructor can be used to set all values in this matrix during initialization
 	 * \param m11 The value to set at row 1, column 1.
@@ -589,7 +589,7 @@ struct Matrix44 {
 	 * \param m43 The value to set at row 4, column 3.
 	 * \param m44 The value to set at row 4, column 4.
 	 */
-	DLLEXPORT Matrix44(
+	NIFLIB_API Matrix44(
 		float m11, float m12, float m13, float m14,
 		float m21, float m22, float m23, float m24,
 		float m31, float m32, float m33, float m34,
@@ -607,7 +607,7 @@ struct Matrix44 {
 	 * \param rotate The 3x3 rotation matrix.
 	 * \param scale The scale factor.
 	 */
-	DLLEXPORT Matrix44( const Vector3 & translate, const Matrix33 & rotation, float scale );
+	NIFLIB_API Matrix44( const Vector3 & translate, const Matrix33 & rotation, float scale );
 
 	/*! This function can be used to set all values in this matrix at the same time.
 	 * \param m11 The value to set at row 1, column 1.
@@ -643,94 +643,94 @@ struct Matrix44 {
 	 * \param rh The matrix to multiply this one with.
 	 * \return The result of the multiplication.
 	 */
-	DLLEXPORT Matrix44 operator*( const Matrix44 & rh ) const;
+	NIFLIB_API Matrix44 operator*( const Matrix44 & rh ) const;
 
 	/* Multiplies this matrix by another and sets the result to itself.
 	 * \param rh The matrix to multiply this one with.
 	 * \return This matrix is returned.
 	 */
-	DLLEXPORT Matrix44 & operator*=( const Matrix44 & rh );
+	NIFLIB_API Matrix44 & operator*=( const Matrix44 & rh );
 
 	/* Multiplies this matrix by a scalar value.
 	 * \param rh The scalar value to multiply each component of this matrix by.
 	 * \return The result of the multiplication.
 	 */
-	DLLEXPORT Matrix44 operator*( float rh ) const;
+	NIFLIB_API Matrix44 operator*( float rh ) const;
 
 	/* Multiplies this matrix by a scalar value and sets the resutl to itself.
 	 * \param rh The scalar value to multiply each component of this matrix by.
 	 * \return This matrix is returned.
 	 */
-	DLLEXPORT Matrix44 & operator*=( float rh );
+	NIFLIB_API Matrix44 & operator*=( float rh );
 
 	/* Multiplies this matrix by a vector with x, y, and z components.
 	 * \param rh The vector to multiply this matrix with.
 	 * \return The result of the multiplication.
 	 */
-	DLLEXPORT Vector3 operator*( const Vector3 & rh ) const;
+	NIFLIB_API Vector3 operator*( const Vector3 & rh ) const;
 
 	/* Adds this matrix to another.
 	 * \param rh The matrix to be added to this one.
 	 * \return The result of the addition.
 	 */
-	DLLEXPORT Matrix44 operator+( const Matrix44 & rh ) const;
+	NIFLIB_API Matrix44 operator+( const Matrix44 & rh ) const;
 
 	/* Adds this matrix to another and sets the result to itself.
 	 * \param rh The matrix to be added to this one.
 	 * \return This matrix is returned.
 	 */
-	DLLEXPORT Matrix44 & operator+=( const Matrix44 & rh );
+	NIFLIB_API Matrix44 & operator+=( const Matrix44 & rh );
 
 	/* Sets the values of this matrix to those of the given matrix.
 	 * \param rh The matrix to copy values from.
 	 * \return This matrix is returned.
 	 */
-	DLLEXPORT Matrix44 & operator=( const Matrix44 & rh );
+	NIFLIB_API Matrix44 & operator=( const Matrix44 & rh );
 
 	/* Compares two 4x4 matricies.  They are considered equal if all components are equal.
 	 * \param rh The matrix to compare this one with.
 	 * \return true if the matricies are equal, false otherwise.
 	 */
-	DLLEXPORT bool operator==( const Matrix44 & rh ) const;
+	NIFLIB_API bool operator==( const Matrix44 & rh ) const;
 
 	/* Allows the contents of the matrix to be printed to an ostream.
 	 * \param lh The ostream to insert the text into.
 	 * \param rh The matrix to insert into the stream.
 	 * \return The given ostream is returned.
 	 */
-	DLLEXPORT friend ostream & operator<<( ostream & lh, const Matrix44 & rh );
+	NIFLIB_API friend ostream & operator<<( ostream & lh, const Matrix44 & rh );
 
 	/*! Calculates the transpose of this matrix.
 	 * \return The transpose of this matrix.
 	 */
-	DLLEXPORT Matrix44 Transpose() const;
+	NIFLIB_API Matrix44 Transpose() const;
 
 	/*! Calculates the determinant of this matrix.
 	 * \return The determinant of this matrix.
 	 */
-	DLLEXPORT float Determinant() const;
+	NIFLIB_API float Determinant() const;
 
 	/*! Calculates the inverse of this matrix.
 	 * \retun The inverse of this matrix.
 	 */
-	DLLEXPORT Matrix44 Inverse() const;
+	NIFLIB_API Matrix44 Inverse() const;
 
 	/*! Returns a 3x3 submatrix of this matrix created by skipping the indicated row and column.
 	 * \param skip_r The row to skip.  Must be a value between 0 and 3.
 	 * \param skip_c The colum to skip.  Must be a value between 0 and 3.
 	 * \return The 3x3 submatrix obtained by skipping the indicated row and column.
 	 */
-	DLLEXPORT Matrix33 Submatrix( int skip_r, int skip_c ) const;
+	NIFLIB_API Matrix33 Submatrix( int skip_r, int skip_c ) const;
 
 	/*! Calculates the adjunct of this matrix created by skipping the indicated row and column.
 	 * \param skip_r The row to skip.  Must be a value between 0 and 3.
 	 * \param skip_c The colum to skip.  Must be a value between 0 and 3.
 	 * \return The adjunct obtained by skipping the indicated row and column.
 	 */
-	DLLEXPORT float Adjunct( int skip_r, int skip_c ) const;
+	NIFLIB_API float Adjunct( int skip_r, int skip_c ) const;
 
 	//undocumented
-	DLLEXPORT void AsFloatArr( float out[4][4] ) {
+	NIFLIB_API void AsFloatArr( float out[4][4] ) {
 		out[0][0] = rows[0][0]; out[0][1] = rows[0][1]; out[0][2] = rows[0][2]; out[0][3] = rows[0][3];
 		out[1][0] = rows[1][0]; out[1][1] = rows[1][1]; out[1][2] = rows[1][2]; out[1][3] = rows[1][3];
 		out[2][0] = rows[2][0]; out[2][1] = rows[2][1]; out[2][2] = rows[2][2]; out[2][3] = rows[2][3];
@@ -738,7 +738,7 @@ struct Matrix44 {
 	}
 
 	//Python Operator Overloads
-	DLLEXPORT Float4 & __getitem__(int n) {
+	NIFLIB_API Float4 & __getitem__(int n) {
 		if (n > 3 || n < 0)
 			throw std::out_of_range("Index out of range for Matrix44");
         return rows[n];
@@ -746,7 +746,7 @@ struct Matrix44 {
 };
 
 /*! Stores a color along with alpha translucency */
-struct DLLEXPORT Color4 {
+struct NIFLIB_API Color4 {
 	float r; /*!< The red component of this color.  Should be between 0.0f and 1.0f. */ 
 	float g; /*!< The green component of this color.  Should be between 0.0f and 1.0f. */ 
 	float b; /*!< The blue component of this color.  Should be between 0.0f and 1.0f. */ 
@@ -783,7 +783,7 @@ struct DLLEXPORT Color4 {
 };
 
 /*! Represents a quaternion - a 4D extention of complex numbers used as an alternitive to matrices to represent rotation.*/
-struct DLLEXPORT Quaternion {
+struct NIFLIB_API Quaternion {
 	float w; /*!< The W scalar component of this Quaternion. */ 
 	float x; /*!< The X vector component of this Quaternion. */ 
 	float y; /*!< The Y vector component of this Quaternion. */ 
diff --git a/niflib.cpp b/niflib.cpp
index c457f8ef468908a3e0dc70167610a8e1005e8f38..6a66e7f1d7297e2f7ec92009e776b5fcb7bff7dd 100644
--- a/niflib.cpp
+++ b/niflib.cpp
@@ -2,6 +2,8 @@
 All rights reserved.  Please see niflib.h for licence. */
 
 //#define DEBUG // this will produce lots of output
+//#define PRINT_BLOCK_NAMES
+//#define PRINT_BLOCK_CONTENTS
 
 #include "niflib.h"
 #include "obj/NiAVObject.h"
@@ -277,7 +279,9 @@ vector<NiObjectRef> ReadNifList( istream & in ) {
 			}
 		}
 
-		//cout << endl << i << ":  " << blockName;
+#ifdef PRINT_BLOCK_NAMES
+		cout << endl << i << ":  " << blockName;
+#endif
 
 		//Create Block of the type that was found
 		blocks[i] = CreateBlock(blockName);
@@ -297,8 +301,9 @@ vector<NiObjectRef> ReadNifList( istream & in ) {
 
 		//blocks[i]->SetBlockNum(i);
 		blocks[i]->Read( in, link_stack, version, user_version );
-
-		//cout << endl << blocks[i]->asString() << endl;
+#ifdef PRINT_BLOCK_CONTENTS
+		cout << endl << blocks[i]->asString() << endl;
+#endif
 	}
 
 	//cout << endl;
diff --git a/niflib.h b/niflib.h
index 2a313a35498671fb803e37d0c819387d1dc0f910..142d69f92983312c6d89e9e1840d08cb9d31a26a 100644
--- a/niflib.h
+++ b/niflib.h
@@ -91,7 +91,7 @@ using namespace std;
  *      print blocks[0]
  * \endcode
  */
-DLLEXPORT unsigned int CheckNifHeader( string const & file_name );
+NIFLIB_API unsigned int CheckNifHeader( string const & file_name );
 
 /*!
  * Reads the given file by file name and returns a vector of block references
@@ -110,14 +110,14 @@ DLLEXPORT unsigned int CheckNifHeader( string const & file_name );
  * 
  * \sa ReadNifTree, WriteNifTree
  */
-DLLEXPORT vector<NiObjectRef> ReadNifList( string const & file_name );
+NIFLIB_API vector<NiObjectRef> ReadNifList( string const & file_name );
 
 /*!
  * Reads the given input stream and returns a vector of block references
  * \param stream The input stream to read NIF data from.
  * \return A vector of block references that point to all the blocks read from the stream.
  */
-DLLEXPORT vector<NiObjectRef> ReadNifList( istream & in );
+NIFLIB_API vector<NiObjectRef> ReadNifList( istream & in );
 
 /*!
  * Reads the given file by file name and returns a reference to the root block.
@@ -136,14 +136,14 @@ DLLEXPORT vector<NiObjectRef> ReadNifList( istream & in );
  * 
  * \sa ReadNifList, WriteNifTree
  */
-DLLEXPORT NiObjectRef ReadNifTree( string const & file_name );
+NIFLIB_API NiObjectRef ReadNifTree( string const & file_name );
 
 /*!
  * Reads the given input stream and returns a reference to the root block.
  * \param stream The input stream to read NIF data from.
  * \return A block reference that points to the root of the tree of data blocks contained in the NIF file.
  */
-DLLEXPORT NiObjectRef ReadNifTree( istream & in );
+NIFLIB_API NiObjectRef ReadNifTree( istream & in );
 
 /*!
  * Creates a new NIF file of the given file name by crawling through the data tree starting with the root block given.
@@ -166,7 +166,7 @@ DLLEXPORT NiObjectRef ReadNifTree( istream & in );
  * 
  * \sa ReadNifList, WriteNifTree
  */
-DLLEXPORT void WriteNifTree( string const & file_name, NiObjectRef const & root, unsigned int version = VER_4_0_0_2, unsigned int user_version = 0 );
+NIFLIB_API void WriteNifTree( string const & file_name, NiObjectRef const & root, unsigned int version = VER_4_0_0_2, unsigned int user_version = 0 );
 
 /*!
  * Writes a nif tree to an ostream starting at the given root block.
@@ -174,7 +174,7 @@ DLLEXPORT void WriteNifTree( string const & file_name, NiObjectRef const & root,
  * \param root The root block to start from when writing out the NIF data.  All decedents of this block will be written to the stream in tree-descending order.
  * \param version The version of the NIF format to use when writing a file.  Default is version 4.0.0.2.
  */
-DLLEXPORT void WriteNifTree( ostream & stream, NiObjectRef const & root, unsigned int version = VER_4_0_0_2, unsigned int user_version = 0 );
+NIFLIB_API void WriteNifTree( ostream & stream, NiObjectRef const & root, unsigned int version = VER_4_0_0_2, unsigned int user_version = 0 );
 
 /*!
  * Writes a bunch of files given a base file name, and a pointer to the root block of the Nif file tree.
@@ -184,7 +184,7 @@ DLLEXPORT void WriteNifTree( ostream & stream, NiObjectRef const & root, unsigne
  * \param export_files What files to write: NIF, NIF + KF + KFM, NIF + KF's + KFM, KF only, KF's only
  * \param kf_type The KF type (Morrowind style, DAoC style, CivIV style, ...)
  */
-DLLEXPORT void WriteFileGroup( string const & file_name, NiObjectRef const & root, unsigned int version, unsigned int export_files, unsigned int kf_type );
+NIFLIB_API void WriteFileGroup( string const & file_name, NiObjectRef const & root, unsigned int version, unsigned int export_files, unsigned int kf_type );
 
 /*!
  * Merges two Nif trees into one.  For standard Nif files, any blocks with the same name are merged.  For Kf files, blocks are attatched to those that match the name specified in the KF root block.  The data stored in a NIF file varies from version to version.  Usually you are safe with the default option (the highest availiable version) but you may need to use an earlier version if you need to clone an obsolete piece of information.
@@ -192,7 +192,7 @@ DLLEXPORT void WriteFileGroup( string const & file_name, NiObjectRef const & roo
  * \param right The root block of the second Nif tree to merge.
  * \param version The version of the nif format to use during the clone operation on the right-hand tree.  The default is the highest version availiable.
  */
-DLLEXPORT void MergeNifTrees( NiObjectRef target, NiObjectRef right, unsigned int version = 0xFFFFFFFF );
+NIFLIB_API void MergeNifTrees( NiObjectRef target, NiObjectRef right, unsigned int version = 0xFFFFFFFF );
 
 
 //// Returns list of all blocks in the tree rooted by root block.
@@ -218,7 +218,7 @@ DLLEXPORT void MergeNifTrees( NiObjectRef target, NiObjectRef right, unsigned in
  * 
  * sa BlocksInMemory
  */
-DLLEXPORT NiObjectRef CreateBlock( string block_type );
+NIFLIB_API NiObjectRef CreateBlock( string block_type );
 
 
 
diff --git a/niflib.sln b/niflib.sln
index a7f5f1ba72193df5b43055fc44a2c6811640cd92..b44f9201876a1a2474bc5c0022496c2fc0f23163 100644
--- a/niflib.sln
+++ b/niflib.sln
@@ -8,6 +8,7 @@ Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Win32 = Debug|Win32
 		PyNiflib|Win32 = PyNiflib|Win32
+		Release - DLL|Win32 = Release - DLL|Win32
 		Release|Win32 = Release|Win32
 	EndGlobalSection
 	GlobalSection(ProjectConfigurationPlatforms) = postSolution
@@ -15,12 +16,15 @@ Global
 		{19FD8EE6-79CC-4BAC-9744-D9573BE47C7E}.Debug|Win32.Build.0 = Debug|Win32
 		{19FD8EE6-79CC-4BAC-9744-D9573BE47C7E}.PyNiflib|Win32.ActiveCfg = PyNiflib|Win32
 		{19FD8EE6-79CC-4BAC-9744-D9573BE47C7E}.PyNiflib|Win32.Build.0 = PyNiflib|Win32
+		{19FD8EE6-79CC-4BAC-9744-D9573BE47C7E}.Release - DLL|Win32.ActiveCfg = Release - DLL|Win32
+		{19FD8EE6-79CC-4BAC-9744-D9573BE47C7E}.Release - DLL|Win32.Build.0 = Release - DLL|Win32
 		{19FD8EE6-79CC-4BAC-9744-D9573BE47C7E}.Release|Win32.ActiveCfg = Release|Win32
 		{19FD8EE6-79CC-4BAC-9744-D9573BE47C7E}.Release|Win32.Build.0 = Release|Win32
 		{7517F24D-B1A1-427C-B952-F5DD5DDAD7A7}.Debug|Win32.ActiveCfg = Debug|Win32
 		{7517F24D-B1A1-427C-B952-F5DD5DDAD7A7}.Debug|Win32.Build.0 = Debug|Win32
 		{7517F24D-B1A1-427C-B952-F5DD5DDAD7A7}.PyNiflib|Win32.ActiveCfg = PyNiflib|Win32
 		{7517F24D-B1A1-427C-B952-F5DD5DDAD7A7}.PyNiflib|Win32.Build.0 = PyNiflib|Win32
+		{7517F24D-B1A1-427C-B952-F5DD5DDAD7A7}.Release - DLL|Win32.ActiveCfg = Release - DLL|Win32
 		{7517F24D-B1A1-427C-B952-F5DD5DDAD7A7}.Release|Win32.ActiveCfg = Release|Win32
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
diff --git a/niflib.vcproj b/niflib.vcproj
index 94f5901286ca432e7bd25d40d02d3b7fc13f05a1..6aa18a8efb0f4ad0b91b24848628cb182cfd4167 100644
--- a/niflib.vcproj
+++ b/niflib.vcproj
@@ -82,7 +82,7 @@
 			Name="Release|Win32"
 			OutputDirectory="..\Release"
 			IntermediateDirectory="..\Release"
-			ConfigurationType="2"
+			ConfigurationType="4"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
 			CharacterSet="2"
 			WholeProgramOptimization="1"
@@ -106,7 +106,7 @@
 				Name="VCCLCompilerTool"
 				AdditionalOptions="/FI&quot;pch.h&quot;"
 				Optimization="3"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BUILDING_DLL"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
 				RuntimeLibrary="0"
 				UsePrecompiledHeader="2"
 				PrecompiledHeaderThrough="pch.h"
@@ -124,15 +124,12 @@
 				Name="VCPreLinkEventTool"
 			/>
 			<Tool
-				Name="VCLinkerTool"
-				OutputFile="..\bin\niflib.dll"
+				Name="VCLibrarianTool"
+				OutputFile="../bin/niflib.lib"
 			/>
 			<Tool
 				Name="VCALinkTool"
 			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
 			<Tool
 				Name="VCXDCMakeTool"
 			/>
@@ -142,12 +139,6 @@
 			<Tool
 				Name="VCFxCopTool"
 			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
 			<Tool
 				Name="VCPostBuildEventTool"
 			/>
@@ -212,6 +203,80 @@
 				Name="VCPostBuildEventTool"
 			/>
 		</Configuration>
+		<Configuration
+			Name="Release - DLL|Win32"
+			OutputDirectory="$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="2"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalOptions="/FI&quot;pch.h&quot;"
+				Optimization="3"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BUILDING_NIFLIB_DLL;USE_NIFLIB_DLL"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="2"
+				PrecompiledHeaderThrough="pch.h"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="..\bin\niflib.dll"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
 	</Configurations>
 	<References>
 	</References>
@@ -252,6 +317,14 @@
 						UsePrecompiledHeader="1"
 					/>
 				</FileConfiguration>
+				<FileConfiguration
+					Name="Release - DLL|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						UsePrecompiledHeader="1"
+					/>
+				</FileConfiguration>
 			</File>
 			<File
 				RelativePath=".\Type.cpp"
diff --git a/obj/ABoneLODController.h b/obj/ABoneLODController.h
index 8d82ef84595b76274e6dc728f207a90e5a189578..adecaad0854d3a310da1898bced5c288e337b009 100644
--- a/obj/ABoneLODController.h
+++ b/obj/ABoneLODController.h
@@ -17,7 +17,7 @@ typedef Ref<ABoneLODController> ABoneLODControllerRef;
  * ABoneLODController - Level of detail controller for bones?
  */
 
-class DLLEXPORT ABoneLODController : public A_BONE_L_O_D_CONTROLLER_PARENT {
+class NIFLIB_API ABoneLODController : public A_BONE_L_O_D_CONTROLLER_PARENT {
 public:
 	ABoneLODController();
 	~ABoneLODController();
diff --git a/obj/AKeyedData.h b/obj/AKeyedData.h
index 6260c94b5490b2b8fc77a44ffa9a4833b54f2c59..0f935fcfc49996322a84e965b26d5411f052510a 100644
--- a/obj/AKeyedData.h
+++ b/obj/AKeyedData.h
@@ -15,7 +15,7 @@ typedef Ref<AKeyedData> AKeyedDataRef;
  * AKeyedData - Single items of data linked to particular key times.
  */
 
-class DLLEXPORT AKeyedData : public A_KEYED_DATA_PARENT {
+class NIFLIB_API AKeyedData : public A_KEYED_DATA_PARENT {
 public:
 	AKeyedData();
 	~AKeyedData();
diff --git a/obj/APSysCtlr.h b/obj/APSysCtlr.h
index e9dab09462599d56852dea9e6d2377d8f7c8064d..1aebf1d92e51f03ef9276b9b673ec67b5b121089 100644
--- a/obj/APSysCtlr.h
+++ b/obj/APSysCtlr.h
@@ -15,7 +15,7 @@ typedef Ref<APSysCtlr> APSysCtlrRef;
  * APSysCtlr - Unknown.
  */
 
-class DLLEXPORT APSysCtlr : public A_P_SYS_CTLR_PARENT {
+class NIFLIB_API APSysCtlr : public A_P_SYS_CTLR_PARENT {
 public:
 	APSysCtlr();
 	~APSysCtlr();
diff --git a/obj/APSysData.h b/obj/APSysData.h
index cdd5bb9302dad294f6fb730bbb562cc6e73bba15..e1c6841b16b10eb0141cc9df997663a4b272d978 100644
--- a/obj/APSysData.h
+++ b/obj/APSysData.h
@@ -15,7 +15,7 @@ typedef Ref<APSysData> APSysDataRef;
  * APSysData - Particle system data.  Probably really NiPSysData.
  */
 
-class DLLEXPORT APSysData : public A_P_SYS_DATA_PARENT {
+class NIFLIB_API APSysData : public A_P_SYS_DATA_PARENT {
 public:
 	APSysData();
 	~APSysData();
diff --git a/obj/AParticleModifier.h b/obj/AParticleModifier.h
index b3a445599de15b67e58d6252798538db29d5a8ee..3eded4113998715f74a55b50f338df2992d1f90f 100644
--- a/obj/AParticleModifier.h
+++ b/obj/AParticleModifier.h
@@ -19,7 +19,7 @@ typedef Ref<AParticleModifier> AParticleModifierRef;
  * AParticleModifier - A particle system modifier.
  */
 
-class DLLEXPORT AParticleModifier : public A_PARTICLE_MODIFIER_PARENT {
+class NIFLIB_API AParticleModifier : public A_PARTICLE_MODIFIER_PARENT {
 public:
 	AParticleModifier();
 	~AParticleModifier();
diff --git a/obj/AbhkConstraint.h b/obj/AbhkConstraint.h
index 7b9cc5eda7ebf1313dfcde1489ed276bfd951bd2..8136bc166145b6bf70ca4df6f6445dff766e73f5 100644
--- a/obj/AbhkConstraint.h
+++ b/obj/AbhkConstraint.h
@@ -19,7 +19,7 @@ typedef Ref<AbhkConstraint> AbhkConstraintRef;
  * AbhkConstraint - Describes a physical constraint.
  */
 
-class DLLEXPORT AbhkConstraint : public ABHK_CONSTRAINT_PARENT {
+class NIFLIB_API AbhkConstraint : public ABHK_CONSTRAINT_PARENT {
 public:
 	AbhkConstraint();
 	~AbhkConstraint();
diff --git a/obj/AbhkRagdollConstraint.h b/obj/AbhkRagdollConstraint.h
index 3887ec8a25a3c1deb4692655a4280d00cdb7a128..ae745560901f6598a1db1af6b5f8746d62ddbce1 100644
--- a/obj/AbhkRagdollConstraint.h
+++ b/obj/AbhkRagdollConstraint.h
@@ -15,7 +15,7 @@ typedef Ref<AbhkRagdollConstraint> AbhkRagdollConstraintRef;
  * AbhkRagdollConstraint - Ragdoll constraint.
  */
 
-class DLLEXPORT AbhkRagdollConstraint : public ABHK_RAGDOLL_CONSTRAINT_PARENT {
+class NIFLIB_API AbhkRagdollConstraint : public ABHK_RAGDOLL_CONSTRAINT_PARENT {
 public:
 	AbhkRagdollConstraint();
 	~AbhkRagdollConstraint();
diff --git a/obj/AbhkShapeCollection.h b/obj/AbhkShapeCollection.h
index e61cfdde34518e09b1dc4bc9775d3078f9f5c920..aec02dfa674f1027bbf8f6d04d286983409bcb48 100644
--- a/obj/AbhkShapeCollection.h
+++ b/obj/AbhkShapeCollection.h
@@ -16,7 +16,7 @@ typedef Ref<AbhkShapeCollection> AbhkShapeCollectionRef;
  * hierarchy.
  */
 
-class DLLEXPORT AbhkShapeCollection : public ABHK_SHAPE_COLLECTION_PARENT {
+class NIFLIB_API AbhkShapeCollection : public ABHK_SHAPE_COLLECTION_PARENT {
 public:
 	AbhkShapeCollection();
 	~AbhkShapeCollection();
diff --git a/obj/AvoidNode.h b/obj/AvoidNode.h
index 0656d359df45fd385f1d6ab5d6c268917dcf03e3..81dae7af5ab65a9d2ef745fe297ffd9e62ecac66 100644
--- a/obj/AvoidNode.h
+++ b/obj/AvoidNode.h
@@ -15,7 +15,7 @@ typedef Ref<AvoidNode> AvoidNodeRef;
  * AvoidNode - Morrowind specific?
  */
 
-class DLLEXPORT AvoidNode : public AVOID_NODE_PARENT {
+class NIFLIB_API AvoidNode : public AVOID_NODE_PARENT {
 public:
 	AvoidNode();
 	~AvoidNode();
diff --git a/obj/BSBound.h b/obj/BSBound.h
index 56358d27f2d8bd6e527b2facf01ec22dec2e3df6..54eba7ea547186fc00f29e06fe8bb355b8ef6a53 100644
--- a/obj/BSBound.h
+++ b/obj/BSBound.h
@@ -15,7 +15,7 @@ typedef Ref<BSBound> BSBoundRef;
  * BSBound - Unknown.
  */
 
-class DLLEXPORT BSBound : public B_S_BOUND_PARENT {
+class NIFLIB_API BSBound : public B_S_BOUND_PARENT {
 public:
 	BSBound();
 	~BSBound();
diff --git a/obj/BSFurnitureMarker.h b/obj/BSFurnitureMarker.h
index 9a20e7e312cf6e45dea6e89c5910ff7b617826c7..4f57228a50f1dd86723450eb758329c09c4d97cd 100644
--- a/obj/BSFurnitureMarker.h
+++ b/obj/BSFurnitureMarker.h
@@ -17,7 +17,7 @@ typedef Ref<BSFurnitureMarker> BSFurnitureMarkerRef;
  * BSFurnitureMarker - Unknown. Marks furniture sitting positions?
  */
 
-class DLLEXPORT BSFurnitureMarker : public B_S_FURNITURE_MARKER_PARENT {
+class NIFLIB_API BSFurnitureMarker : public B_S_FURNITURE_MARKER_PARENT {
 public:
 	BSFurnitureMarker();
 	~BSFurnitureMarker();
diff --git a/obj/BSKeyframeController.h b/obj/BSKeyframeController.h
index 245fdf2da92fb9d9eee13a948b0f3f5a6e1a62ae..3bbf1f8af93614cfebc6b173ef3de82405a8c5fd 100644
--- a/obj/BSKeyframeController.h
+++ b/obj/BSKeyframeController.h
@@ -19,7 +19,7 @@ typedef Ref<BSKeyframeController> BSKeyframeControllerRef;
  * BSKeyframeController - An extended keyframe controller.
  */
 
-class DLLEXPORT BSKeyframeController : public B_S_KEYFRAME_CONTROLLER_PARENT {
+class NIFLIB_API BSKeyframeController : public B_S_KEYFRAME_CONTROLLER_PARENT {
 public:
 	BSKeyframeController();
 	~BSKeyframeController();
diff --git a/obj/BSPSysArrayEmitter.h b/obj/BSPSysArrayEmitter.h
index 2c312574f3d43bbcd51b943f6f1c2c1e169524b1..4d1ef9f84e8c322c3376d608a0785efa0ac6c05d 100644
--- a/obj/BSPSysArrayEmitter.h
+++ b/obj/BSPSysArrayEmitter.h
@@ -15,7 +15,7 @@ typedef Ref<BSPSysArrayEmitter> BSPSysArrayEmitterRef;
  * BSPSysArrayEmitter - Unknown.
  */
 
-class DLLEXPORT BSPSysArrayEmitter : public B_S_P_SYS_ARRAY_EMITTER_PARENT {
+class NIFLIB_API BSPSysArrayEmitter : public B_S_P_SYS_ARRAY_EMITTER_PARENT {
 public:
 	BSPSysArrayEmitter();
 	~BSPSysArrayEmitter();
diff --git a/obj/BSParentVelocityModifier.h b/obj/BSParentVelocityModifier.h
index 624b315d7b0f47a9d6d9253247ce97319d10d630..3a9e77d95d6440dedd3309c38e627b67aff1bc4c 100644
--- a/obj/BSParentVelocityModifier.h
+++ b/obj/BSParentVelocityModifier.h
@@ -15,7 +15,7 @@ typedef Ref<BSParentVelocityModifier> BSParentVelocityModifierRef;
  * BSParentVelocityModifier - Unknown.
  */
 
-class DLLEXPORT BSParentVelocityModifier : public B_S_PARENT_VELOCITY_MODIFIER_PARENT {
+class NIFLIB_API BSParentVelocityModifier : public B_S_PARENT_VELOCITY_MODIFIER_PARENT {
 public:
 	BSParentVelocityModifier();
 	~BSParentVelocityModifier();
diff --git a/obj/BSXFlags.h b/obj/BSXFlags.h
index ce390772437294bab318f21f79a33a88b9c1f274..908ca2746b0772ecfcc4b6204aa21a3b662dc0bd 100644
--- a/obj/BSXFlags.h
+++ b/obj/BSXFlags.h
@@ -15,7 +15,7 @@ typedef Ref<BSXFlags> BSXFlagsRef;
  * BSXFlags - Unknown.
  */
 
-class DLLEXPORT BSXFlags : public B_S_X_FLAGS_PARENT {
+class NIFLIB_API BSXFlags : public B_S_X_FLAGS_PARENT {
 public:
 	BSXFlags();
 	~BSXFlags();
diff --git a/obj/FxButton.h b/obj/FxButton.h
index f52295afb913079fe23779f2ade3fb7f3f3d52c5..5767338b61a4b7f84c9e88e7d2955017b4450a07 100644
--- a/obj/FxButton.h
+++ b/obj/FxButton.h
@@ -15,7 +15,7 @@ typedef Ref<FxButton> FxButtonRef;
  * FxButton - Unknown.
  */
 
-class DLLEXPORT FxButton : public FX_BUTTON_PARENT {
+class NIFLIB_API FxButton : public FX_BUTTON_PARENT {
 public:
 	FxButton();
 	~FxButton();
diff --git a/obj/FxRadioButton.h b/obj/FxRadioButton.h
index 1870ae499c99aead71e01ed5262265b969597a89..88340f74ee0b1218278f7b147a251805b61702f3 100644
--- a/obj/FxRadioButton.h
+++ b/obj/FxRadioButton.h
@@ -19,7 +19,7 @@ typedef Ref<FxRadioButton> FxRadioButtonRef;
  * FxRadioButton - Unknown.
  */
 
-class DLLEXPORT FxRadioButton : public FX_RADIO_BUTTON_PARENT {
+class NIFLIB_API FxRadioButton : public FX_RADIO_BUTTON_PARENT {
 public:
 	FxRadioButton();
 	~FxRadioButton();
diff --git a/obj/FxWidget.h b/obj/FxWidget.h
index e199a45b85a3bb510302517360e5bbad2bdfe921..d5b3d8482ecfa9fc41689a19cc41207ac4d606b7 100644
--- a/obj/FxWidget.h
+++ b/obj/FxWidget.h
@@ -15,7 +15,7 @@ typedef Ref<FxWidget> FxWidgetRef;
  * FxWidget - Firaxis-specific UI widgets?
  */
 
-class DLLEXPORT FxWidget : public FX_WIDGET_PARENT {
+class NIFLIB_API FxWidget : public FX_WIDGET_PARENT {
 public:
 	FxWidget();
 	~FxWidget();
diff --git a/obj/NiAVObject.h b/obj/NiAVObject.h
index 094fc4faf04aa309e66ecec4a74389762c617d38..1c2dd62086cbd4f52057dddf4f406c205135702b 100644
--- a/obj/NiAVObject.h
+++ b/obj/NiAVObject.h
@@ -23,7 +23,7 @@ class NiNode;
 class NiAVObject;
 typedef Ref<NiAVObject> NiAVObjectRef;
 
-class DLLEXPORT NiAVObject : public NI_A_V_OBJECT_PARENT {
+class NIFLIB_API NiAVObject : public NI_A_V_OBJECT_PARENT {
 public:
 	NiAVObject();
 	~NiAVObject();
diff --git a/obj/NiAlphaController.h b/obj/NiAlphaController.h
index 710ead8da63a9afc5ed23b3b803a7843215b6820..e9ef63af8ff72d1ad8403aaeb15ab1d9d5a6c7a3 100644
--- a/obj/NiAlphaController.h
+++ b/obj/NiAlphaController.h
@@ -19,7 +19,7 @@ typedef Ref<NiAlphaController> NiAlphaControllerRef;
  * NiAlphaController - Time controller for transparency.
  */
 
-class DLLEXPORT NiAlphaController : public NI_ALPHA_CONTROLLER_PARENT {
+class NIFLIB_API NiAlphaController : public NI_ALPHA_CONTROLLER_PARENT {
 public:
 	NiAlphaController();
 	~NiAlphaController();
diff --git a/obj/NiAlphaProperty.h b/obj/NiAlphaProperty.h
index ec5afac89841b9e53258e0859849e6052b41faac..dbbab41cf5f9155bddc5e81a8a071053f67ee17e 100644
--- a/obj/NiAlphaProperty.h
+++ b/obj/NiAlphaProperty.h
@@ -15,7 +15,7 @@ typedef Ref<NiAlphaProperty> NiAlphaPropertyRef;
  * NiAlphaProperty - Transparency. Flags 0x00ED.
  */
 
-class DLLEXPORT NiAlphaProperty : public NI_ALPHA_PROPERTY_PARENT {
+class NIFLIB_API NiAlphaProperty : public NI_ALPHA_PROPERTY_PARENT {
 public:
 	NiAlphaProperty();
 	~NiAlphaProperty();
diff --git a/obj/NiAmbientLight.h b/obj/NiAmbientLight.h
index 8aa44b40660277e80af25c41c95c454235981f73..46b7f7963b05d5467b87dacbc5f2de283b4408f0 100644
--- a/obj/NiAmbientLight.h
+++ b/obj/NiAmbientLight.h
@@ -15,7 +15,7 @@ typedef Ref<NiAmbientLight> NiAmbientLightRef;
  * NiAmbientLight - Ambient light source.
  */
 
-class DLLEXPORT NiAmbientLight : public NI_AMBIENT_LIGHT_PARENT {
+class NIFLIB_API NiAmbientLight : public NI_AMBIENT_LIGHT_PARENT {
 public:
 	NiAmbientLight();
 	~NiAmbientLight();
diff --git a/obj/NiAutoNormalParticles.h b/obj/NiAutoNormalParticles.h
index 41267528780fa851765e9de2760b22039bacaca2..68f1cea87a868e210c7178c8adc8807b8af037a7 100644
--- a/obj/NiAutoNormalParticles.h
+++ b/obj/NiAutoNormalParticles.h
@@ -15,7 +15,7 @@ typedef Ref<NiAutoNormalParticles> NiAutoNormalParticlesRef;
  * NiAutoNormalParticles - Unknown.
  */
 
-class DLLEXPORT NiAutoNormalParticles : public NI_AUTO_NORMAL_PARTICLES_PARENT {
+class NIFLIB_API NiAutoNormalParticles : public NI_AUTO_NORMAL_PARTICLES_PARENT {
 public:
 	NiAutoNormalParticles();
 	~NiAutoNormalParticles();
diff --git a/obj/NiAutoNormalParticlesData.h b/obj/NiAutoNormalParticlesData.h
index e90595092981ac8e28d8c7e2cc43711281728b6e..274b6a93dad3d92b5ab6cdc987950924b84a2fd7 100644
--- a/obj/NiAutoNormalParticlesData.h
+++ b/obj/NiAutoNormalParticlesData.h
@@ -16,7 +16,7 @@ typedef Ref<NiAutoNormalParticlesData> NiAutoNormalParticlesDataRef;
  * normals?).
  */
 
-class DLLEXPORT NiAutoNormalParticlesData : public NI_AUTO_NORMAL_PARTICLES_DATA_PARENT {
+class NIFLIB_API NiAutoNormalParticlesData : public NI_AUTO_NORMAL_PARTICLES_DATA_PARENT {
 public:
 	NiAutoNormalParticlesData();
 	~NiAutoNormalParticlesData();
diff --git a/obj/NiBSAnimationNode.h b/obj/NiBSAnimationNode.h
index 2abc3fa6dd2c258835862f63778aa5204dc44e6e..46b88bf06c71d838beaf01971faf38573f3b354d 100644
--- a/obj/NiBSAnimationNode.h
+++ b/obj/NiBSAnimationNode.h
@@ -16,7 +16,7 @@ typedef Ref<NiBSAnimationNode> NiBSAnimationNodeRef;
  * properties stored in the flags.
  */
 
-class DLLEXPORT NiBSAnimationNode : public NI_B_S_ANIMATION_NODE_PARENT {
+class NIFLIB_API NiBSAnimationNode : public NI_B_S_ANIMATION_NODE_PARENT {
 public:
 	NiBSAnimationNode();
 	~NiBSAnimationNode();
diff --git a/obj/NiBSBoneLODController.h b/obj/NiBSBoneLODController.h
index 4b2457edcfd55291119a0afba84bfb1e710fc1c2..f1d3ed5a68b39f74ef661cbce25b4e9a00bdaa01 100644
--- a/obj/NiBSBoneLODController.h
+++ b/obj/NiBSBoneLODController.h
@@ -15,7 +15,7 @@ typedef Ref<NiBSBoneLODController> NiBSBoneLODControllerRef;
  * NiBSBoneLODController - A simple LOD controller for bones.
  */
 
-class DLLEXPORT NiBSBoneLODController : public NI_B_S_BONE_L_O_D_CONTROLLER_PARENT {
+class NIFLIB_API NiBSBoneLODController : public NI_B_S_BONE_L_O_D_CONTROLLER_PARENT {
 public:
 	NiBSBoneLODController();
 	~NiBSBoneLODController();
diff --git a/obj/NiBSPArrayController.h b/obj/NiBSPArrayController.h
index 06551f46ff0f5818c21594fa32d1201031e75e9b..5834790732f57d70438eae77b54e7cb6117ae03a 100644
--- a/obj/NiBSPArrayController.h
+++ b/obj/NiBSPArrayController.h
@@ -16,7 +16,7 @@ typedef Ref<NiBSPArrayController> NiBSPArrayControllerRef;
  * conjunction with NiBSParticleNode.
  */
 
-class DLLEXPORT NiBSPArrayController : public NI_B_S_P_ARRAY_CONTROLLER_PARENT {
+class NIFLIB_API NiBSPArrayController : public NI_B_S_P_ARRAY_CONTROLLER_PARENT {
 public:
 	NiBSPArrayController();
 	~NiBSPArrayController();
diff --git a/obj/NiBSParticleNode.h b/obj/NiBSParticleNode.h
index 431c88afe91af287e012e2ef22984f5cf1c295d7..a961d1a9197960bf6b076669193f752886dae3a3 100644
--- a/obj/NiBSParticleNode.h
+++ b/obj/NiBSParticleNode.h
@@ -15,7 +15,7 @@ typedef Ref<NiBSParticleNode> NiBSParticleNodeRef;
  * NiBSParticleNode - Unknown.
  */
 
-class DLLEXPORT NiBSParticleNode : public NI_B_S_PARTICLE_NODE_PARENT {
+class NIFLIB_API NiBSParticleNode : public NI_B_S_PARTICLE_NODE_PARENT {
 public:
 	NiBSParticleNode();
 	~NiBSParticleNode();
diff --git a/obj/NiBSplineBasisData.h b/obj/NiBSplineBasisData.h
index 71492e79768706b244086a8456c7c48732a6ea7c..975ff67287acd9fb082a78bfcae9c0a6d67e5783 100644
--- a/obj/NiBSplineBasisData.h
+++ b/obj/NiBSplineBasisData.h
@@ -15,7 +15,7 @@ typedef Ref<NiBSplineBasisData> NiBSplineBasisDataRef;
  * NiBSplineBasisData - Unknown.
  */
 
-class DLLEXPORT NiBSplineBasisData : public NI_B_SPLINE_BASIS_DATA_PARENT {
+class NIFLIB_API NiBSplineBasisData : public NI_B_SPLINE_BASIS_DATA_PARENT {
 public:
 	NiBSplineBasisData();
 	~NiBSplineBasisData();
diff --git a/obj/NiBSplineCompFloatInterpolator.h b/obj/NiBSplineCompFloatInterpolator.h
index 06c0d56d8622ac1f883aa0eb6fb61ea4c5303596..0a05d260d0c74b5715e2fe1809fba3232bba97e7 100644
--- a/obj/NiBSplineCompFloatInterpolator.h
+++ b/obj/NiBSplineCompFloatInterpolator.h
@@ -15,7 +15,7 @@ typedef Ref<NiBSplineCompFloatInterpolator> NiBSplineCompFloatInterpolatorRef;
  * NiBSplineCompFloatInterpolator - Unknown.
  */
 
-class DLLEXPORT NiBSplineCompFloatInterpolator : public NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_PARENT {
+class NIFLIB_API NiBSplineCompFloatInterpolator : public NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_PARENT {
 public:
 	NiBSplineCompFloatInterpolator();
 	~NiBSplineCompFloatInterpolator();
diff --git a/obj/NiBSplineCompPoint3Interpolator.h b/obj/NiBSplineCompPoint3Interpolator.h
index 7065f259e6c756aaf3e38f308a2b87eec0b4f933..e1dc410191132c95822b364a4f62bf2666d1b3db 100644
--- a/obj/NiBSplineCompPoint3Interpolator.h
+++ b/obj/NiBSplineCompPoint3Interpolator.h
@@ -20,7 +20,7 @@ typedef Ref<NiBSplineCompPoint3Interpolator> NiBSplineCompPoint3InterpolatorRef;
  * NiBSplineCompPoint3Interpolator - Unknown.
  */
 
-class DLLEXPORT NiBSplineCompPoint3Interpolator : public NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_PARENT {
+class NIFLIB_API NiBSplineCompPoint3Interpolator : public NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_PARENT {
 public:
 	NiBSplineCompPoint3Interpolator();
 	~NiBSplineCompPoint3Interpolator();
diff --git a/obj/NiBSplineCompTransformInterpolator.h b/obj/NiBSplineCompTransformInterpolator.h
index cce870b2eb96db7e6d7f91d6ddf5ae073aed9ddc..25dc9ac3424c0d489dc6ccdbaa8819d7d2d6876e 100644
--- a/obj/NiBSplineCompTransformInterpolator.h
+++ b/obj/NiBSplineCompTransformInterpolator.h
@@ -20,7 +20,7 @@ typedef Ref<NiBSplineCompTransformInterpolator> NiBSplineCompTransformInterpolat
  * NiBSplineCompTransformInterpolator - Unknown.
  */
 
-class DLLEXPORT NiBSplineCompTransformInterpolator : public NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_PARENT {
+class NIFLIB_API NiBSplineCompTransformInterpolator : public NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_PARENT {
 public:
 	NiBSplineCompTransformInterpolator();
 	~NiBSplineCompTransformInterpolator();
diff --git a/obj/NiBSplineInterpolator.h b/obj/NiBSplineInterpolator.h
index 3203bc3be1351d851bbd1eca1fbf86259ac44a04..1b675b59d529073f39f24d8acf61025525bb61e3 100644
--- a/obj/NiBSplineInterpolator.h
+++ b/obj/NiBSplineInterpolator.h
@@ -15,7 +15,7 @@ typedef Ref<NiBSplineInterpolator> NiBSplineInterpolatorRef;
  * NiBSplineInterpolator - A B-spline (component?) interpolator.
  */
 
-class DLLEXPORT NiBSplineInterpolator : public NI_B_SPLINE_INTERPOLATOR_PARENT {
+class NIFLIB_API NiBSplineInterpolator : public NI_B_SPLINE_INTERPOLATOR_PARENT {
 public:
 	NiBSplineInterpolator();
 	~NiBSplineInterpolator();
diff --git a/obj/NiBillboardNode.h b/obj/NiBillboardNode.h
index 2fda1ebcd82182d16665f495e62db9e5d968acce..ac5bc6aed30f64aa910866f319239535a50a7e56 100644
--- a/obj/NiBillboardNode.h
+++ b/obj/NiBillboardNode.h
@@ -16,7 +16,7 @@ typedef Ref<NiBillboardNode> NiBillboardNodeRef;
  * camera creating a billboard effect for any attached objects.
  */
 
-class DLLEXPORT NiBillboardNode : public NI_BILLBOARD_NODE_PARENT {
+class NIFLIB_API NiBillboardNode : public NI_BILLBOARD_NODE_PARENT {
 public:
 	NiBillboardNode();
 	~NiBillboardNode();
diff --git a/obj/NiBinaryExtraData.h b/obj/NiBinaryExtraData.h
index 6409d9a835010adaf3d606f524e2eba052cbd37d..1151e04dc54b071aa2cd4c25bf6b5dc3eab1e7fd 100644
--- a/obj/NiBinaryExtraData.h
+++ b/obj/NiBinaryExtraData.h
@@ -18,7 +18,7 @@ typedef Ref<NiBinaryExtraData> NiBinaryExtraDataRef;
  * binormals in Oblivion.
  */
 
-class DLLEXPORT NiBinaryExtraData : public NI_BINARY_EXTRA_DATA_PARENT {
+class NIFLIB_API NiBinaryExtraData : public NI_BINARY_EXTRA_DATA_PARENT {
 public:
 	NiBinaryExtraData();
 	~NiBinaryExtraData();
diff --git a/obj/NiBlendBoolInterpolator.h b/obj/NiBlendBoolInterpolator.h
index 501216c500120850c2e16cf374d21fd996f0f275..6906a1b307fe41e83848bcd238aec453fc3a593d 100644
--- a/obj/NiBlendBoolInterpolator.h
+++ b/obj/NiBlendBoolInterpolator.h
@@ -15,7 +15,7 @@ typedef Ref<NiBlendBoolInterpolator> NiBlendBoolInterpolatorRef;
  * NiBlendBoolInterpolator - An interpolator for a bool.
  */
 
-class DLLEXPORT NiBlendBoolInterpolator : public NI_BLEND_BOOL_INTERPOLATOR_PARENT {
+class NIFLIB_API NiBlendBoolInterpolator : public NI_BLEND_BOOL_INTERPOLATOR_PARENT {
 public:
 	NiBlendBoolInterpolator();
 	~NiBlendBoolInterpolator();
diff --git a/obj/NiBlendFloatInterpolator.h b/obj/NiBlendFloatInterpolator.h
index fe888e11f656c7db6de6fdc3cb280f3e798a199d..eacf93850e736c82cd9ad221d9b45ecf38ebeb06 100644
--- a/obj/NiBlendFloatInterpolator.h
+++ b/obj/NiBlendFloatInterpolator.h
@@ -15,7 +15,7 @@ typedef Ref<NiBlendFloatInterpolator> NiBlendFloatInterpolatorRef;
  * NiBlendFloatInterpolator - An interpolator for a float.
  */
 
-class DLLEXPORT NiBlendFloatInterpolator : public NI_BLEND_FLOAT_INTERPOLATOR_PARENT {
+class NIFLIB_API NiBlendFloatInterpolator : public NI_BLEND_FLOAT_INTERPOLATOR_PARENT {
 public:
 	NiBlendFloatInterpolator();
 	~NiBlendFloatInterpolator();
diff --git a/obj/NiBlendInterpolator.h b/obj/NiBlendInterpolator.h
index c879585f44009ebf060ceff0c966d916e0587c31..8083883891c1ab3f34e6cb27be2d2449453a33bc 100644
--- a/obj/NiBlendInterpolator.h
+++ b/obj/NiBlendInterpolator.h
@@ -15,7 +15,7 @@ typedef Ref<NiBlendInterpolator> NiBlendInterpolatorRef;
  * NiBlendInterpolator - An extended type of interpolater.
  */
 
-class DLLEXPORT NiBlendInterpolator : public NI_BLEND_INTERPOLATOR_PARENT {
+class NIFLIB_API NiBlendInterpolator : public NI_BLEND_INTERPOLATOR_PARENT {
 public:
 	NiBlendInterpolator();
 	~NiBlendInterpolator();
diff --git a/obj/NiBlendPoint3Interpolator.h b/obj/NiBlendPoint3Interpolator.h
index 6f20e2567bcf7884f335801ea0c7eaa18c32e9fb..4d5b1440c1455245d942616be6dce3476dddec16 100644
--- a/obj/NiBlendPoint3Interpolator.h
+++ b/obj/NiBlendPoint3Interpolator.h
@@ -15,7 +15,7 @@ typedef Ref<NiBlendPoint3Interpolator> NiBlendPoint3InterpolatorRef;
  * NiBlendPoint3Interpolator - Interpolates a point?
  */
 
-class DLLEXPORT NiBlendPoint3Interpolator : public NI_BLEND_POINT3_INTERPOLATOR_PARENT {
+class NIFLIB_API NiBlendPoint3Interpolator : public NI_BLEND_POINT3_INTERPOLATOR_PARENT {
 public:
 	NiBlendPoint3Interpolator();
 	~NiBlendPoint3Interpolator();
diff --git a/obj/NiBlendTransformInterpolator.h b/obj/NiBlendTransformInterpolator.h
index f3d6600cedc8e6a5025bdac46d0bee91c2b91a21..b3dc6bbf7cc923601a6639b2e6e95a57c6dcd784 100644
--- a/obj/NiBlendTransformInterpolator.h
+++ b/obj/NiBlendTransformInterpolator.h
@@ -15,7 +15,7 @@ typedef Ref<NiBlendTransformInterpolator> NiBlendTransformInterpolatorRef;
  * NiBlendTransformInterpolator - Unknown.
  */
 
-class DLLEXPORT NiBlendTransformInterpolator : public NI_BLEND_TRANSFORM_INTERPOLATOR_PARENT {
+class NIFLIB_API NiBlendTransformInterpolator : public NI_BLEND_TRANSFORM_INTERPOLATOR_PARENT {
 public:
 	NiBlendTransformInterpolator();
 	~NiBlendTransformInterpolator();
diff --git a/obj/NiBoneLODController.h b/obj/NiBoneLODController.h
index a27ab952555de2b55ff3e4dabd231e0cc32e24e1..574febee9c66f432b439399d5ba066f5f4f456d5 100644
--- a/obj/NiBoneLODController.h
+++ b/obj/NiBoneLODController.h
@@ -21,7 +21,7 @@ typedef Ref<NiBoneLODController> NiBoneLODControllerRef;
  * NiBoneLODController - A LOD controller for bones?
  */
 
-class DLLEXPORT NiBoneLODController : public NI_BONE_L_O_D_CONTROLLER_PARENT {
+class NIFLIB_API NiBoneLODController : public NI_BONE_L_O_D_CONTROLLER_PARENT {
 public:
 	NiBoneLODController();
 	~NiBoneLODController();
diff --git a/obj/NiBoolData.h b/obj/NiBoolData.h
index d35c014a1322c8485043e7b565c431cabd7f5125..2cfbd9a4c31a6c347c0d3ce10b0a31762646e6d4 100644
--- a/obj/NiBoolData.h
+++ b/obj/NiBoolData.h
@@ -17,7 +17,7 @@ typedef Ref<NiBoolData> NiBoolDataRef;
  * NiBoolData - Timed boolean data.
  */
 
-class DLLEXPORT NiBoolData : public NI_BOOL_DATA_PARENT {
+class NIFLIB_API NiBoolData : public NI_BOOL_DATA_PARENT {
 public:
 	NiBoolData();
 	~NiBoolData();
diff --git a/obj/NiBoolInterpolator.h b/obj/NiBoolInterpolator.h
index 7e25b4faf9a46841d0ca8ab5133f399b6c963a7e..5ed6e7aa981f97a9d8d3b7bb6d937913bf588b33 100644
--- a/obj/NiBoolInterpolator.h
+++ b/obj/NiBoolInterpolator.h
@@ -19,7 +19,7 @@ typedef Ref<NiBoolInterpolator> NiBoolInterpolatorRef;
  * NiBoolInterpolator - Unknown.
  */
 
-class DLLEXPORT NiBoolInterpolator : public NI_BOOL_INTERPOLATOR_PARENT {
+class NIFLIB_API NiBoolInterpolator : public NI_BOOL_INTERPOLATOR_PARENT {
 public:
 	NiBoolInterpolator();
 	~NiBoolInterpolator();
diff --git a/obj/NiBoolTimelineInterpolator.h b/obj/NiBoolTimelineInterpolator.h
index 2bd261ad6534cee0cbca4c0484a5894e6a891273..5941527c0f87c1ed7ded47d63dee30508afdcdc6 100644
--- a/obj/NiBoolTimelineInterpolator.h
+++ b/obj/NiBoolTimelineInterpolator.h
@@ -19,7 +19,7 @@ typedef Ref<NiBoolTimelineInterpolator> NiBoolTimelineInterpolatorRef;
  * NiBoolTimelineInterpolator - Unknown.
  */
 
-class DLLEXPORT NiBoolTimelineInterpolator : public NI_BOOL_TIMELINE_INTERPOLATOR_PARENT {
+class NIFLIB_API NiBoolTimelineInterpolator : public NI_BOOL_TIMELINE_INTERPOLATOR_PARENT {
 public:
 	NiBoolTimelineInterpolator();
 	~NiBoolTimelineInterpolator();
diff --git a/obj/NiBooleanExtraData.h b/obj/NiBooleanExtraData.h
index 6d7dabcf021dea4db3f9631466749b36fd210ac4..cbf8ea667ab73623f4765728dd3ece56a2ee9457 100644
--- a/obj/NiBooleanExtraData.h
+++ b/obj/NiBooleanExtraData.h
@@ -15,7 +15,7 @@ typedef Ref<NiBooleanExtraData> NiBooleanExtraDataRef;
  * NiBooleanExtraData - Boolean extra data.
  */
 
-class DLLEXPORT NiBooleanExtraData : public NI_BOOLEAN_EXTRA_DATA_PARENT {
+class NIFLIB_API NiBooleanExtraData : public NI_BOOLEAN_EXTRA_DATA_PARENT {
 public:
 	NiBooleanExtraData();
 	~NiBooleanExtraData();
diff --git a/obj/NiCamera.h b/obj/NiCamera.h
index 25cfc4195473641cf8183db3f3d1da9f22f47b93..881233780c3f20e81d042effa1c77f93b69546ea 100644
--- a/obj/NiCamera.h
+++ b/obj/NiCamera.h
@@ -19,7 +19,7 @@ typedef Ref<NiCamera> NiCameraRef;
  * NiCamera - Camera object.
  */
 
-class DLLEXPORT NiCamera : public NI_CAMERA_PARENT {
+class NIFLIB_API NiCamera : public NI_CAMERA_PARENT {
 public:
 	NiCamera();
 	~NiCamera();
diff --git a/obj/NiCollisionData.h b/obj/NiCollisionData.h
index af2eb54605285bd1e635fc6a68ebda15161a0f9a..07e9415f2a7427a395e32fde8f0cddcb980829a6 100644
--- a/obj/NiCollisionData.h
+++ b/obj/NiCollisionData.h
@@ -19,7 +19,7 @@ typedef Ref<NiCollisionData> NiCollisionDataRef;
  * NiCollisionData - Collision box.
  */
 
-class DLLEXPORT NiCollisionData : public NI_COLLISION_DATA_PARENT {
+class NIFLIB_API NiCollisionData : public NI_COLLISION_DATA_PARENT {
 public:
 	NiCollisionData();
 	~NiCollisionData();
diff --git a/obj/NiCollisionObject.h b/obj/NiCollisionObject.h
index 6273fffe3eda7dd99d0b1ea4d0e24ce435367e45..c9a0fd3d6ce8d967125408e3cb716a0fd0e924d9 100644
--- a/obj/NiCollisionObject.h
+++ b/obj/NiCollisionObject.h
@@ -20,7 +20,7 @@ typedef Ref<NiCollisionObject> NiCollisionObjectRef;
  * NiCollisionObject - Unknown.
  */
 
-class DLLEXPORT NiCollisionObject : public NI_COLLISION_OBJECT_PARENT {
+class NIFLIB_API NiCollisionObject : public NI_COLLISION_OBJECT_PARENT {
 public:
 	NiCollisionObject();
 	~NiCollisionObject();
diff --git a/obj/NiColorData.h b/obj/NiColorData.h
index e6581e6d9b2a99d4ea62f3381f2250b6bd187a21..b867818f95fa28f5f4cf4ed0a3c5d2bbd6b63a5a 100644
--- a/obj/NiColorData.h
+++ b/obj/NiColorData.h
@@ -17,7 +17,7 @@ typedef Ref<NiColorData> NiColorDataRef;
  * NiColorData - Color data for material color controller.
  */
 
-class DLLEXPORT NiColorData : public NI_COLOR_DATA_PARENT {
+class NIFLIB_API NiColorData : public NI_COLOR_DATA_PARENT {
 public:
 	NiColorData();
 	~NiColorData();
diff --git a/obj/NiColorExtraData.h b/obj/NiColorExtraData.h
index fc31b56f528b90ca8ce6d64b6f0f63e9d35c5fce..e8dbb6c918ddf3f991bfe2794623dca9ac93f9ff 100644
--- a/obj/NiColorExtraData.h
+++ b/obj/NiColorExtraData.h
@@ -15,7 +15,7 @@ typedef Ref<NiColorExtraData> NiColorExtraDataRef;
  * NiColorExtraData - Unknown.
  */
 
-class DLLEXPORT NiColorExtraData : public NI_COLOR_EXTRA_DATA_PARENT {
+class NIFLIB_API NiColorExtraData : public NI_COLOR_EXTRA_DATA_PARENT {
 public:
 	NiColorExtraData();
 	~NiColorExtraData();
diff --git a/obj/NiControllerManager.h b/obj/NiControllerManager.h
index 3d8c1421cd4e16b237d4d2245760d6e27dfb85e4..01639c09a72421be63290dda971bd5db6cbfa593 100644
--- a/obj/NiControllerManager.h
+++ b/obj/NiControllerManager.h
@@ -20,7 +20,7 @@ typedef Ref<NiControllerManager> NiControllerManagerRef;
  * NiControllerManager - Unknown. Root of all controllers?
  */
 
-class DLLEXPORT NiControllerManager : public NI_CONTROLLER_MANAGER_PARENT {
+class NIFLIB_API NiControllerManager : public NI_CONTROLLER_MANAGER_PARENT {
 public:
 	NiControllerManager();
 	~NiControllerManager();
diff --git a/obj/NiControllerSequence.h b/obj/NiControllerSequence.h
index fea7d5b1020064c9f1a7f24ef05200b76658b4ce..99fa7aec392f37225a6633d4b7d321535dbabcfa 100644
--- a/obj/NiControllerSequence.h
+++ b/obj/NiControllerSequence.h
@@ -24,7 +24,7 @@ typedef Ref<NiControllerSequence> NiControllerSequenceRef;
  * up).
  */
 
-class DLLEXPORT NiControllerSequence : public NI_CONTROLLER_SEQUENCE_PARENT {
+class NIFLIB_API NiControllerSequence : public NI_CONTROLLER_SEQUENCE_PARENT {
 public:
 	NiControllerSequence();
 	~NiControllerSequence();
diff --git a/obj/NiDefaultAVObjectPalette.h b/obj/NiDefaultAVObjectPalette.h
index 5f9d1c8e356fec85d1dd364435379cdfbcf93674..1cc4a8e060536b5a45c5f54c944719b0b1a2cfbf 100644
--- a/obj/NiDefaultAVObjectPalette.h
+++ b/obj/NiDefaultAVObjectPalette.h
@@ -18,7 +18,7 @@ typedef Ref<NiDefaultAVObjectPalette> NiDefaultAVObjectPaletteRef;
  * by NiControllerManager.
  */
 
-class DLLEXPORT NiDefaultAVObjectPalette : public NI_DEFAULT_A_V_OBJECT_PALETTE_PARENT {
+class NIFLIB_API NiDefaultAVObjectPalette : public NI_DEFAULT_A_V_OBJECT_PALETTE_PARENT {
 public:
 	NiDefaultAVObjectPalette();
 	~NiDefaultAVObjectPalette();
diff --git a/obj/NiDirectionalLight.h b/obj/NiDirectionalLight.h
index 13097acf4bc44fedb5dac082a3b73dd61b7c48a1..08a3807bf3e1a5f37c4e28d9b05c1bcf3f2d03be 100644
--- a/obj/NiDirectionalLight.h
+++ b/obj/NiDirectionalLight.h
@@ -15,7 +15,7 @@ typedef Ref<NiDirectionalLight> NiDirectionalLightRef;
  * NiDirectionalLight - Directional light source.
  */
 
-class DLLEXPORT NiDirectionalLight : public NI_DIRECTIONAL_LIGHT_PARENT {
+class NIFLIB_API NiDirectionalLight : public NI_DIRECTIONAL_LIGHT_PARENT {
 public:
 	NiDirectionalLight();
 	~NiDirectionalLight();
diff --git a/obj/NiDitherProperty.h b/obj/NiDitherProperty.h
index 0f4e07a6e16c67b08804dac0ad2d3e373a56b69a..9825108705dca0200c14d3d06b650c51b8796e81 100644
--- a/obj/NiDitherProperty.h
+++ b/obj/NiDitherProperty.h
@@ -15,7 +15,7 @@ typedef Ref<NiDitherProperty> NiDitherPropertyRef;
  * NiDitherProperty - Unknown.
  */
 
-class DLLEXPORT NiDitherProperty : public NI_DITHER_PROPERTY_PARENT {
+class NIFLIB_API NiDitherProperty : public NI_DITHER_PROPERTY_PARENT {
 public:
 	NiDitherProperty();
 	~NiDitherProperty();
diff --git a/obj/NiDynamicEffect.h b/obj/NiDynamicEffect.h
index 78478d42d828fa1fb44a900d49cfb8c9dc7d2108..f1e009cda4489f71658c3e2df8e35a2c1d6c026d 100644
--- a/obj/NiDynamicEffect.h
+++ b/obj/NiDynamicEffect.h
@@ -19,7 +19,7 @@ typedef Ref<NiDynamicEffect> NiDynamicEffectRef;
  * NiDynamicEffect - A dynamic effect such as a light or environment map.
  */
 
-class DLLEXPORT NiDynamicEffect : public NI_DYNAMIC_EFFECT_PARENT {
+class NIFLIB_API NiDynamicEffect : public NI_DYNAMIC_EFFECT_PARENT {
 public:
 	NiDynamicEffect();
 	~NiDynamicEffect();
diff --git a/obj/NiExtraData.h b/obj/NiExtraData.h
index 6360019a7758b2aee72579e580e70380813bc204..811a3b74240a14ef03034c02f8df45294da02cf4 100644
--- a/obj/NiExtraData.h
+++ b/obj/NiExtraData.h
@@ -15,7 +15,7 @@ typedef Ref<NiExtraData> NiExtraDataRef;
  * NiExtraData - A generic extra data block.
  */
 
-class DLLEXPORT NiExtraData : public NI_EXTRA_DATA_PARENT {
+class NIFLIB_API NiExtraData : public NI_EXTRA_DATA_PARENT {
 public:
 	NiExtraData();
 	~NiExtraData();
diff --git a/obj/NiFlipController.h b/obj/NiFlipController.h
index 1c1b2e4b62829c6681790981afb67ea9ba9a2661..10bc317a4662a054aa49bcca128435cff3424108 100644
--- a/obj/NiFlipController.h
+++ b/obj/NiFlipController.h
@@ -19,7 +19,7 @@ typedef Ref<NiFlipController> NiFlipControllerRef;
  * NiFlipController - Texture flipping controller.
  */
 
-class DLLEXPORT NiFlipController : public NI_FLIP_CONTROLLER_PARENT {
+class NIFLIB_API NiFlipController : public NI_FLIP_CONTROLLER_PARENT {
 public:
 	NiFlipController();
 	~NiFlipController();
diff --git a/obj/NiFloatData.h b/obj/NiFloatData.h
index 106944cae73ed0ee534372ecc7a3a41752dbf314..39ab0b721c78f0d35ebc6d3f563a2279ca499c4f 100644
--- a/obj/NiFloatData.h
+++ b/obj/NiFloatData.h
@@ -17,7 +17,7 @@ typedef Ref<NiFloatData> NiFloatDataRef;
  * NiFloatData - Possibly the 1D position along a 3D path.
  */
 
-class DLLEXPORT NiFloatData : public NI_FLOAT_DATA_PARENT {
+class NIFLIB_API NiFloatData : public NI_FLOAT_DATA_PARENT {
 public:
 	NiFloatData();
 	~NiFloatData();
diff --git a/obj/NiFloatExtraData.h b/obj/NiFloatExtraData.h
index b7b5e50f3c3848dd060867938e933af164942d6d..929c1e6f09f46c2a5d30052cbc87283be35a6e5e 100644
--- a/obj/NiFloatExtraData.h
+++ b/obj/NiFloatExtraData.h
@@ -15,7 +15,7 @@ typedef Ref<NiFloatExtraData> NiFloatExtraDataRef;
  * NiFloatExtraData - Float extra data.
  */
 
-class DLLEXPORT NiFloatExtraData : public NI_FLOAT_EXTRA_DATA_PARENT {
+class NIFLIB_API NiFloatExtraData : public NI_FLOAT_EXTRA_DATA_PARENT {
 public:
 	NiFloatExtraData();
 	~NiFloatExtraData();
diff --git a/obj/NiFloatExtraDataController.h b/obj/NiFloatExtraDataController.h
index 049829f54b2da7fb226be68a668f29cd32e0c342..b0131f0cc4f96030b2e75796087f3233ce6866fa 100644
--- a/obj/NiFloatExtraDataController.h
+++ b/obj/NiFloatExtraDataController.h
@@ -19,7 +19,7 @@ typedef Ref<NiFloatExtraDataController> NiFloatExtraDataControllerRef;
  * NiFloatExtraDataController - Unknown.
  */
 
-class DLLEXPORT NiFloatExtraDataController : public NI_FLOAT_EXTRA_DATA_CONTROLLER_PARENT {
+class NIFLIB_API NiFloatExtraDataController : public NI_FLOAT_EXTRA_DATA_CONTROLLER_PARENT {
 public:
 	NiFloatExtraDataController();
 	~NiFloatExtraDataController();
diff --git a/obj/NiFloatInterpolator.h b/obj/NiFloatInterpolator.h
index 3661b71145bf6ec5e13328711cd97f8e8267dfb0..d49f5d2a4f02b27b4458e8572e2670a38fb5128d 100644
--- a/obj/NiFloatInterpolator.h
+++ b/obj/NiFloatInterpolator.h
@@ -19,7 +19,7 @@ typedef Ref<NiFloatInterpolator> NiFloatInterpolatorRef;
  * NiFloatInterpolator - Unknown.
  */
 
-class DLLEXPORT NiFloatInterpolator : public NI_FLOAT_INTERPOLATOR_PARENT {
+class NIFLIB_API NiFloatInterpolator : public NI_FLOAT_INTERPOLATOR_PARENT {
 public:
 	NiFloatInterpolator();
 	~NiFloatInterpolator();
diff --git a/obj/NiFloatsExtraData.h b/obj/NiFloatsExtraData.h
index f465471bbfd8097bae90b2a0800395a0cd4f0aa0..3217510bbcbb3fdef442f563ec30647674b81399 100644
--- a/obj/NiFloatsExtraData.h
+++ b/obj/NiFloatsExtraData.h
@@ -15,7 +15,7 @@ typedef Ref<NiFloatsExtraData> NiFloatsExtraDataRef;
  * NiFloatsExtraData - Unknown.
  */
 
-class DLLEXPORT NiFloatsExtraData : public NI_FLOATS_EXTRA_DATA_PARENT {
+class NIFLIB_API NiFloatsExtraData : public NI_FLOATS_EXTRA_DATA_PARENT {
 public:
 	NiFloatsExtraData();
 	~NiFloatsExtraData();
diff --git a/obj/NiFogProperty.h b/obj/NiFogProperty.h
index c31d48edbf6e16cdbebf2f3730f56b0f281fe4af..c8739742477ec912181c1fb8581e228e286e03c4 100644
--- a/obj/NiFogProperty.h
+++ b/obj/NiFogProperty.h
@@ -15,7 +15,7 @@ typedef Ref<NiFogProperty> NiFogPropertyRef;
  * NiFogProperty - Describes... fog?
  */
 
-class DLLEXPORT NiFogProperty : public NI_FOG_PROPERTY_PARENT {
+class NIFLIB_API NiFogProperty : public NI_FOG_PROPERTY_PARENT {
 public:
 	NiFogProperty();
 	~NiFogProperty();
diff --git a/obj/NiGeomMorpherController.h b/obj/NiGeomMorpherController.h
index c2e84fbfe082562b74bccd0fe9007d766f3bf782..ae870cef63b9e6b17a07115d560b6708cd71178b 100644
--- a/obj/NiGeomMorpherController.h
+++ b/obj/NiGeomMorpherController.h
@@ -20,7 +20,7 @@ typedef Ref<NiGeomMorpherController> NiGeomMorpherControllerRef;
  * NiGeomMorpherController - Time controller for geometry morphing.
  */
 
-class DLLEXPORT NiGeomMorpherController : public NI_GEOM_MORPHER_CONTROLLER_PARENT {
+class NIFLIB_API NiGeomMorpherController : public NI_GEOM_MORPHER_CONTROLLER_PARENT {
 public:
 	NiGeomMorpherController();
 	~NiGeomMorpherController();
diff --git a/obj/NiGravity.h b/obj/NiGravity.h
index ac558df0d02474f975b303d8fd8adcefc424b5c5..7270cb506d0b35aae63babc9b3c8de601358cc49 100644
--- a/obj/NiGravity.h
+++ b/obj/NiGravity.h
@@ -16,7 +16,7 @@ typedef Ref<NiGravity> NiGravityRef;
  * particles.
  */
 
-class DLLEXPORT NiGravity : public NI_GRAVITY_PARENT {
+class NIFLIB_API NiGravity : public NI_GRAVITY_PARENT {
 public:
 	NiGravity();
 	~NiGravity();
diff --git a/obj/NiIntegerExtraData.h b/obj/NiIntegerExtraData.h
index 33712c9265e2530505f9d43aaefb072fbeb6b35c..f9bb8b29bfb1d614c70eeb8c4fb98f7d9466eb73 100644
--- a/obj/NiIntegerExtraData.h
+++ b/obj/NiIntegerExtraData.h
@@ -15,7 +15,7 @@ typedef Ref<NiIntegerExtraData> NiIntegerExtraDataRef;
  * NiIntegerExtraData - Extra integer data.
  */
 
-class DLLEXPORT NiIntegerExtraData : public NI_INTEGER_EXTRA_DATA_PARENT {
+class NIFLIB_API NiIntegerExtraData : public NI_INTEGER_EXTRA_DATA_PARENT {
 public:
 	NiIntegerExtraData();
 	~NiIntegerExtraData();
diff --git a/obj/NiIntegersExtraData.h b/obj/NiIntegersExtraData.h
index b5d95a97668ea54939d480d37c0bcbcc303a77b8..e7a71c69533dcd786c19f2c2406e46b4b119ec9e 100644
--- a/obj/NiIntegersExtraData.h
+++ b/obj/NiIntegersExtraData.h
@@ -15,7 +15,7 @@ typedef Ref<NiIntegersExtraData> NiIntegersExtraDataRef;
  * NiIntegersExtraData - Integers data.
  */
 
-class DLLEXPORT NiIntegersExtraData : public NI_INTEGERS_EXTRA_DATA_PARENT {
+class NIFLIB_API NiIntegersExtraData : public NI_INTEGERS_EXTRA_DATA_PARENT {
 public:
 	NiIntegersExtraData();
 	~NiIntegersExtraData();
diff --git a/obj/NiInterpolator.h b/obj/NiInterpolator.h
index f8b37131fb9d1a2c3534660ab233fa335007807d..8ca81c1d5633dfcb0eb04000d8546d047acc4647 100644
--- a/obj/NiInterpolator.h
+++ b/obj/NiInterpolator.h
@@ -15,7 +15,7 @@ typedef Ref<NiInterpolator> NiInterpolatorRef;
  * NiInterpolator - Interpolator blocks - function unknown.
  */
 
-class DLLEXPORT NiInterpolator : public NI_INTERPOLATOR_PARENT {
+class NIFLIB_API NiInterpolator : public NI_INTERPOLATOR_PARENT {
 public:
 	NiInterpolator();
 	~NiInterpolator();
diff --git a/obj/NiKeyframeController.h b/obj/NiKeyframeController.h
index 1a9e19c1863007869296c950ae4ad5cbe15d5d36..bb383930ab47d938b3055c3f8c85cf139a96bfec 100644
--- a/obj/NiKeyframeController.h
+++ b/obj/NiKeyframeController.h
@@ -20,7 +20,7 @@ typedef Ref<NiKeyframeController> NiKeyframeControllerRef;
  * frames.
  */
 
-class DLLEXPORT NiKeyframeController : public NI_KEYFRAME_CONTROLLER_PARENT {
+class NIFLIB_API NiKeyframeController : public NI_KEYFRAME_CONTROLLER_PARENT {
 public:
 	NiKeyframeController();
 	~NiKeyframeController();
diff --git a/obj/NiKeyframeData.h b/obj/NiKeyframeData.h
index a0c24436bcabfff4cd545aa12cc36243e36ee4eb..dbef265417979167ada6e2f2eb2d3e4ff7604c06 100644
--- a/obj/NiKeyframeData.h
+++ b/obj/NiKeyframeData.h
@@ -17,7 +17,7 @@ typedef Ref<NiKeyframeData> NiKeyframeDataRef;
  * NiKeyframeData - Keyframes for mesh animation.
  */
 
-class DLLEXPORT NiKeyframeData : public NI_KEYFRAME_DATA_PARENT {
+class NIFLIB_API NiKeyframeData : public NI_KEYFRAME_DATA_PARENT {
 public:
 	NiKeyframeData();
 	~NiKeyframeData();
diff --git a/obj/NiLODNode.h b/obj/NiLODNode.h
index 3a4b75b23aaeb486eebe32a68ad1b4059b59be3b..58bb07e301d739c7d8956f565aeff302fd7b66f0 100644
--- a/obj/NiLODNode.h
+++ b/obj/NiLODNode.h
@@ -23,7 +23,7 @@ typedef Ref<NiLODNode> NiLODNodeRef;
  * distance.
  */
 
-class DLLEXPORT NiLODNode : public NI_L_O_D_NODE_PARENT {
+class NIFLIB_API NiLODNode : public NI_L_O_D_NODE_PARENT {
 public:
 	NiLODNode();
 	~NiLODNode();
diff --git a/obj/NiLight.h b/obj/NiLight.h
index c2b5d0bf11333768a06946797f3723ce94538eff..66b829f33dd6b9b9ff4b2afc2acac7a34ce9648c 100644
--- a/obj/NiLight.h
+++ b/obj/NiLight.h
@@ -15,7 +15,7 @@ typedef Ref<NiLight> NiLightRef;
  * NiLight - Light source.
  */
 
-class DLLEXPORT NiLight : public NI_LIGHT_PARENT {
+class NIFLIB_API NiLight : public NI_LIGHT_PARENT {
 public:
 	NiLight();
 	~NiLight();
diff --git a/obj/NiLightColorController.h b/obj/NiLightColorController.h
index 46065e56e01ba3cdb499b65e2e0df45f00740ec3..a9fb6410f6e63da8fcd5c6c10e49a3b9fbfc2ac3 100644
--- a/obj/NiLightColorController.h
+++ b/obj/NiLightColorController.h
@@ -20,7 +20,7 @@ typedef Ref<NiLightColorController> NiLightColorControllerRef;
  * NiLightColorController - Light color animation controller.
  */
 
-class DLLEXPORT NiLightColorController : public NI_LIGHT_COLOR_CONTROLLER_PARENT {
+class NIFLIB_API NiLightColorController : public NI_LIGHT_COLOR_CONTROLLER_PARENT {
 public:
 	NiLightColorController();
 	~NiLightColorController();
diff --git a/obj/NiLightDimmerController.h b/obj/NiLightDimmerController.h
index e7c5c66eb1aa1a96091d5086bed96470d4d0c24f..2ef9afe4a65bda810a44bcfed1f4b692db2cca3e 100644
--- a/obj/NiLightDimmerController.h
+++ b/obj/NiLightDimmerController.h
@@ -19,7 +19,7 @@ typedef Ref<NiLightDimmerController> NiLightDimmerControllerRef;
  * NiLightDimmerController - Unknown controller.
  */
 
-class DLLEXPORT NiLightDimmerController : public NI_LIGHT_DIMMER_CONTROLLER_PARENT {
+class NIFLIB_API NiLightDimmerController : public NI_LIGHT_DIMMER_CONTROLLER_PARENT {
 public:
 	NiLightDimmerController();
 	~NiLightDimmerController();
diff --git a/obj/NiLookAtController.h b/obj/NiLookAtController.h
index 335d811ff9773b652b69fa12d9fa3ba9aa8ea96c..f080b74a796dadb928d4ddd280723934c9c0f097 100644
--- a/obj/NiLookAtController.h
+++ b/obj/NiLookAtController.h
@@ -20,7 +20,7 @@ typedef Ref<NiLookAtController> NiLookAtControllerRef;
  * -3.4e+38.
  */
 
-class DLLEXPORT NiLookAtController : public NI_LOOK_AT_CONTROLLER_PARENT {
+class NIFLIB_API NiLookAtController : public NI_LOOK_AT_CONTROLLER_PARENT {
 public:
 	NiLookAtController();
 	~NiLookAtController();
diff --git a/obj/NiLookAtInterpolator.h b/obj/NiLookAtInterpolator.h
index 24f45cf452583ed20a17418d5661e293128aa2d5..e1ac64b24e708b1b7bdeea0c7c4926db5c08874d 100644
--- a/obj/NiLookAtInterpolator.h
+++ b/obj/NiLookAtInterpolator.h
@@ -21,7 +21,7 @@ typedef Ref<NiLookAtInterpolator> NiLookAtInterpolatorRef;
  * NiLookAtInterpolator - Unknown.
  */
 
-class DLLEXPORT NiLookAtInterpolator : public NI_LOOK_AT_INTERPOLATOR_PARENT {
+class NIFLIB_API NiLookAtInterpolator : public NI_LOOK_AT_INTERPOLATOR_PARENT {
 public:
 	NiLookAtInterpolator();
 	~NiLookAtInterpolator();
diff --git a/obj/NiMaterialColorController.h b/obj/NiMaterialColorController.h
index 8b512704b6d163f8104c45dd994dc1585de2324d..107f82592406e2446fc5fd63acf2c827d48d9163 100644
--- a/obj/NiMaterialColorController.h
+++ b/obj/NiMaterialColorController.h
@@ -19,7 +19,7 @@ typedef Ref<NiMaterialColorController> NiMaterialColorControllerRef;
  * NiMaterialColorController - Time controller for material color.
  */
 
-class DLLEXPORT NiMaterialColorController : public NI_MATERIAL_COLOR_CONTROLLER_PARENT {
+class NIFLIB_API NiMaterialColorController : public NI_MATERIAL_COLOR_CONTROLLER_PARENT {
 public:
 	NiMaterialColorController();
 	~NiMaterialColorController();
diff --git a/obj/NiMaterialProperty.h b/obj/NiMaterialProperty.h
index 45e8a28c8d471f55ee38808ed8b01f196e76a0d8..0706b2113bd5f17ac1aee46dbbc6d8bb5e3ea3b7 100644
--- a/obj/NiMaterialProperty.h
+++ b/obj/NiMaterialProperty.h
@@ -15,7 +15,7 @@ typedef Ref<NiMaterialProperty> NiMaterialPropertyRef;
  * NiMaterialProperty - Describes the material shading properties.
  */
 
-class DLLEXPORT NiMaterialProperty : public NI_MATERIAL_PROPERTY_PARENT {
+class NIFLIB_API NiMaterialProperty : public NI_MATERIAL_PROPERTY_PARENT {
 public:
 	NiMaterialProperty();
 	~NiMaterialProperty();
diff --git a/obj/NiMeshPSysData.h b/obj/NiMeshPSysData.h
index 37ad6f6ff7461ffcf89fc306d41f737e714c9793..0ad936ee4b60d41e1de44c953b824302a226ddc9 100644
--- a/obj/NiMeshPSysData.h
+++ b/obj/NiMeshPSysData.h
@@ -20,7 +20,7 @@ typedef Ref<NiMeshPSysData> NiMeshPSysDataRef;
  * NiMeshPSysData - Particle meshes data.
  */
 
-class DLLEXPORT NiMeshPSysData : public NI_MESH_P_SYS_DATA_PARENT {
+class NIFLIB_API NiMeshPSysData : public NI_MESH_P_SYS_DATA_PARENT {
 public:
 	NiMeshPSysData();
 	~NiMeshPSysData();
diff --git a/obj/NiMeshParticleSystem.h b/obj/NiMeshParticleSystem.h
index ac30c2bdd12d27515cfce5876cffe0ee81cc0672..be2e46946d5340f767fe3cd81bd8f2e0db4bee50 100644
--- a/obj/NiMeshParticleSystem.h
+++ b/obj/NiMeshParticleSystem.h
@@ -15,7 +15,7 @@ typedef Ref<NiMeshParticleSystem> NiMeshParticleSystemRef;
  * NiMeshParticleSystem - Particle system.
  */
 
-class DLLEXPORT NiMeshParticleSystem : public NI_MESH_PARTICLE_SYSTEM_PARENT {
+class NIFLIB_API NiMeshParticleSystem : public NI_MESH_PARTICLE_SYSTEM_PARENT {
 public:
 	NiMeshParticleSystem();
 	~NiMeshParticleSystem();
diff --git a/obj/NiMorphData.h b/obj/NiMorphData.h
index 31c2687d411a4cbce537b557b6fce2f4ca09929f..3f1395abf5a98bfe96fc971565def357988423fe 100644
--- a/obj/NiMorphData.h
+++ b/obj/NiMorphData.h
@@ -17,7 +17,7 @@ typedef Ref<NiMorphData> NiMorphDataRef;
  * NiMorphData - Geometry morphing data.
  */
 
-class DLLEXPORT NiMorphData : public NI_MORPH_DATA_PARENT {
+class NIFLIB_API NiMorphData : public NI_MORPH_DATA_PARENT {
 public:
 	NiMorphData();
 	~NiMorphData();
diff --git a/obj/NiMultiTargetTransformController.h b/obj/NiMultiTargetTransformController.h
index 4faeadc88b6633624df9a72710e56b86e55ebdcc..ba762c29369b4e0df7b16ce0ab12736426205ee8 100644
--- a/obj/NiMultiTargetTransformController.h
+++ b/obj/NiMultiTargetTransformController.h
@@ -19,7 +19,7 @@ typedef Ref<NiMultiTargetTransformController> NiMultiTargetTransformControllerRe
  * NiMultiTargetTransformController - Unknown.
  */
 
-class DLLEXPORT NiMultiTargetTransformController : public NI_MULTI_TARGET_TRANSFORM_CONTROLLER_PARENT {
+class NIFLIB_API NiMultiTargetTransformController : public NI_MULTI_TARGET_TRANSFORM_CONTROLLER_PARENT {
 public:
 	NiMultiTargetTransformController();
 	~NiMultiTargetTransformController();
diff --git a/obj/NiNode.h b/obj/NiNode.h
index afddc44a9d7d89e7248fb6175819b47e063184ca..4e436d734b24ccbaaa6ee1611a2cd5e0cf47243b 100644
--- a/obj/NiNode.h
+++ b/obj/NiNode.h
@@ -21,7 +21,7 @@ typedef Ref<NiNode> NiNodeRef;
  * NiNode - Generic node block for grouping.
  */
 
-class DLLEXPORT NiNode : public NI_NODE_PARENT {
+class NIFLIB_API NiNode : public NI_NODE_PARENT {
 public:
 	NiNode();
 	~NiNode();
diff --git a/obj/NiObject.h b/obj/NiObject.h
index 2e51630c0243d7e640fe6e8d9ad623ee14071e06..104a4603a600c11a062fa74bcca8880cf8c4565f 100644
--- a/obj/NiObject.h
+++ b/obj/NiObject.h
@@ -30,12 +30,12 @@ typedef Ref<NiObject> NiObjectRef;
 typedef Ref<NiObject> blk_ref; //Temporary to make old code compile
 typedef NiObject IBlock;
 
-class DLLEXPORT NiObject {
+class NiObject {
 public:
-	NiObject();
-	virtual ~NiObject();
+	NIFLIB_API NiObject();
+	NIFLIB_API virtual ~NiObject();
 	//Run-Time Type Information
-	static const Type TYPE;
+	NIFLIB_API static const Type TYPE;
 
 	/*!
 	 * Used to determine an object's type.  These type strings are the same as the class names of the blocks in the <a href = "http://niftools.sourceforge.net/docsys/">NIF File Format Browser</a>.
@@ -55,29 +55,29 @@ public:
 	 * 
 	 * \sa CreateBlock
 	 */
-	virtual const Type & GetType() const { return TYPE; };
+	NIFLIB_API virtual const Type & GetType() const { return TYPE; };
 
-	bool IsSameType( const Type & compare_to ) const;
-	bool IsSameType( const NiObject * object ) const;
-	bool IsDerivedType (const Type & compare_to ) const;
-	bool IsDerivedType( const NiObject * objct ) const;
+	NIFLIB_API bool IsSameType( const Type & compare_to ) const;
+	NIFLIB_API bool IsSameType( const NiObject * object ) const;
+	NIFLIB_API bool IsDerivedType (const Type & compare_to ) const;
+	NIFLIB_API bool IsDerivedType( const NiObject * objct ) const;
 
 	//Streaming Functions
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version, unsigned int user_version ) {}
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version, unsigned int user_version ) const {}
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version, unsigned int user_version ) {}
+	NIFLIB_HIDDEN virtual void Read( istream& in, list<uint> & link_stack, unsigned int version, unsigned int user_version ) {}
+	NIFLIB_HIDDEN virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version, unsigned int user_version ) const {}
+	NIFLIB_HIDDEN virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version, unsigned int user_version ) {}
 
 	//Reference Counting
-	void AddRef(); //Should not be called directly
-	void SubtractRef(); //Should not be called directly
-	unsigned int GetNumRefs() { return _ref_count; }
+	NIFLIB_API void AddRef(); //Should not be called directly
+	NIFLIB_API void SubtractRef(); //Should not be called directly
+	NIFLIB_API unsigned int GetNumRefs() { return _ref_count; }
 
 	/*! Returns A new block that contains all the same data that this block does, but occupies a different part of memory.  The data stored in a NIF file varies from version to version.  Usually you are safe with the default option (the highest availiable version) but you may need to use an earlier version if you need to clone an obsolete piece of information.
 	 * \param version The version number to use in the memory streaming operation.  Default is the highest version availiable.
 	 * \return A cloned copy of this block as a new block.
 	 * \sa CreateBlock
 	 */
-	NiObjectRef Clone( unsigned int version = 0xFFFFFFFF );
+	NIFLIB_API NiObjectRef Clone( unsigned int version = 0xFFFFFFFF );
 
 	/*!
 	 * Summarizes the information contained in this block in English.
@@ -98,13 +98,13 @@ public:
 	 * 
 	 * \sa IAttr::asString, SetVerboseMode
 	 */
-	virtual string asString( bool verbose = false ) const;
+	NIFLIB_API virtual string asString( bool verbose = false ) const;
 
 	/*!
 	 * Formats a human readable string that includes the type of the object
 	 * \return A string in the form:  address(type)
 	 */
-	virtual string GetIDString();
+	NIFLIB_API virtual string GetIDString();
 
 	/*!
 	 * Used to retrieve all blocks that the current block is linked to through <i>all</i> attributes.
@@ -122,20 +122,20 @@ public:
 	 * attr_list = my_block.GetRefs()
 	 * \endcode
 	 */
-	virtual list<NiObjectRef> GetRefs() const;
+	NIFLIB_API virtual list<NiObjectRef> GetRefs() const;
 	
 	// Python Operator Overloads
-	string __str__() const {
+	NIFLIB_API string __str__() const {
 		return asString();
 	};
 
-	virtual void RemoveCrossRef( NiObject * block_to_remove );
+	NIFLIB_API virtual void RemoveCrossRef( NiObject * block_to_remove );
 
-	void IncCrossRef( NiObject * block );
-	void DecCrossRef( NiObject* block );
-	virtual void ReassignCrossRefs( const map<string,NiObjectRef> & name_map );
+	NIFLIB_API void IncCrossRef( NiObject * block );
+	NIFLIB_API void DecCrossRef( NiObject* block );
+	NIFLIB_API virtual void ReassignCrossRefs( const map<string,NiObjectRef> & name_map );
 	
-	static unsigned int NumObjectsInMemory();
+	NIFLIB_API static unsigned int NumObjectsInMemory();
 private:
 	unsigned int _ref_count;
 	list<NiObject*> _cross_refs;
diff --git a/obj/NiObjectNET.h b/obj/NiObjectNET.h
index 7264f553faae42f2372245ee3b3ff2448c914d99..133b65ac85873539dce6fd7915c35cd13da84450 100644
--- a/obj/NiObjectNET.h
+++ b/obj/NiObjectNET.h
@@ -20,7 +20,7 @@ class NiTimeController;
  */
 typedef Ref<NiObjectNET> NiObjectNETRef;
 
-class DLLEXPORT NiObjectNET : public NI_OBJECT_N_E_T_PARENT {
+class NIFLIB_API NiObjectNET : public NI_OBJECT_N_E_T_PARENT {
 public:
 	NiObjectNET();
 	~NiObjectNET();
diff --git a/obj/NiPSysAgeDeathModifier.h b/obj/NiPSysAgeDeathModifier.h
index 3791c9909c73abfb3b1ac45bfec639a4856630a3..cd2bb6956c44e36c074608e78278df8021ad754a 100644
--- a/obj/NiPSysAgeDeathModifier.h
+++ b/obj/NiPSysAgeDeathModifier.h
@@ -19,7 +19,7 @@ typedef Ref<NiPSysAgeDeathModifier> NiPSysAgeDeathModifierRef;
  * NiPSysAgeDeathModifier - Unknown particle modifier.
  */
 
-class DLLEXPORT NiPSysAgeDeathModifier : public NI_P_SYS_AGE_DEATH_MODIFIER_PARENT {
+class NIFLIB_API NiPSysAgeDeathModifier : public NI_P_SYS_AGE_DEATH_MODIFIER_PARENT {
 public:
 	NiPSysAgeDeathModifier();
 	~NiPSysAgeDeathModifier();
diff --git a/obj/NiPSysBombModifier.h b/obj/NiPSysBombModifier.h
index 46535427e68c6f8faff8d709acdffd641214e109..67af45a54d079e1ac2e056d86073eef0238a3101 100644
--- a/obj/NiPSysBombModifier.h
+++ b/obj/NiPSysBombModifier.h
@@ -19,7 +19,7 @@ typedef Ref<NiPSysBombModifier> NiPSysBombModifierRef;
  * NiPSysBombModifier - Unknown.
  */
 
-class DLLEXPORT NiPSysBombModifier : public NI_P_SYS_BOMB_MODIFIER_PARENT {
+class NIFLIB_API NiPSysBombModifier : public NI_P_SYS_BOMB_MODIFIER_PARENT {
 public:
 	NiPSysBombModifier();
 	~NiPSysBombModifier();
diff --git a/obj/NiPSysBoundUpdateModifier.h b/obj/NiPSysBoundUpdateModifier.h
index 306a940f3939236559bf431c21cc1887479608f7..34543afe92ba80228ca3d1b0aef6dee492f6b480 100644
--- a/obj/NiPSysBoundUpdateModifier.h
+++ b/obj/NiPSysBoundUpdateModifier.h
@@ -15,7 +15,7 @@ typedef Ref<NiPSysBoundUpdateModifier> NiPSysBoundUpdateModifierRef;
  * NiPSysBoundUpdateModifier - Unknown particle system modifier.
  */
 
-class DLLEXPORT NiPSysBoundUpdateModifier : public NI_P_SYS_BOUND_UPDATE_MODIFIER_PARENT {
+class NIFLIB_API NiPSysBoundUpdateModifier : public NI_P_SYS_BOUND_UPDATE_MODIFIER_PARENT {
 public:
 	NiPSysBoundUpdateModifier();
 	~NiPSysBoundUpdateModifier();
diff --git a/obj/NiPSysBoxEmitter.h b/obj/NiPSysBoxEmitter.h
index a948218677964e9fe6af9a81c970cf237916a7da..b28febf51c05136923724ea6e9244a3d9f4764d0 100644
--- a/obj/NiPSysBoxEmitter.h
+++ b/obj/NiPSysBoxEmitter.h
@@ -15,7 +15,7 @@ typedef Ref<NiPSysBoxEmitter> NiPSysBoxEmitterRef;
  * NiPSysBoxEmitter - Unknown particle modifier.
  */
 
-class DLLEXPORT NiPSysBoxEmitter : public NI_P_SYS_BOX_EMITTER_PARENT {
+class NIFLIB_API NiPSysBoxEmitter : public NI_P_SYS_BOX_EMITTER_PARENT {
 public:
 	NiPSysBoxEmitter();
 	~NiPSysBoxEmitter();
diff --git a/obj/NiPSysColliderManager.h b/obj/NiPSysColliderManager.h
index 31408aa0ee473406c80789415cc961a4a41840a3..53a28a0e3886e9ea7630af942961c2450edd8cd1 100644
--- a/obj/NiPSysColliderManager.h
+++ b/obj/NiPSysColliderManager.h
@@ -19,7 +19,7 @@ typedef Ref<NiPSysColliderManager> NiPSysColliderManagerRef;
  * NiPSysColliderManager - Unknown.
  */
 
-class DLLEXPORT NiPSysColliderManager : public NI_P_SYS_COLLIDER_MANAGER_PARENT {
+class NIFLIB_API NiPSysColliderManager : public NI_P_SYS_COLLIDER_MANAGER_PARENT {
 public:
 	NiPSysColliderManager();
 	~NiPSysColliderManager();
diff --git a/obj/NiPSysColorModifier.h b/obj/NiPSysColorModifier.h
index 9240f8770a9cefa0269fb9aa8783fdf4ea2f97fd..f3588d0e28ee63bc10cb9219a1d059aa757757b3 100644
--- a/obj/NiPSysColorModifier.h
+++ b/obj/NiPSysColorModifier.h
@@ -19,7 +19,7 @@ typedef Ref<NiPSysColorModifier> NiPSysColorModifierRef;
  * NiPSysColorModifier - Unknown particle modifier.
  */
 
-class DLLEXPORT NiPSysColorModifier : public NI_P_SYS_COLOR_MODIFIER_PARENT {
+class NIFLIB_API NiPSysColorModifier : public NI_P_SYS_COLOR_MODIFIER_PARENT {
 public:
 	NiPSysColorModifier();
 	~NiPSysColorModifier();
diff --git a/obj/NiPSysCylinderEmitter.h b/obj/NiPSysCylinderEmitter.h
index 48de90a9c6996bc575b9dcb4e8678cb5f383b203..9df7e4abf117eafe7dbed207f4e3e6d562d9ca64 100644
--- a/obj/NiPSysCylinderEmitter.h
+++ b/obj/NiPSysCylinderEmitter.h
@@ -15,7 +15,7 @@ typedef Ref<NiPSysCylinderEmitter> NiPSysCylinderEmitterRef;
  * NiPSysCylinderEmitter - Unknown.
  */
 
-class DLLEXPORT NiPSysCylinderEmitter : public NI_P_SYS_CYLINDER_EMITTER_PARENT {
+class NIFLIB_API NiPSysCylinderEmitter : public NI_P_SYS_CYLINDER_EMITTER_PARENT {
 public:
 	NiPSysCylinderEmitter();
 	~NiPSysCylinderEmitter();
diff --git a/obj/NiPSysData.h b/obj/NiPSysData.h
index 4f897897730ef63caaf01dacac062fb667a09ccd..7f4b9f37f0cb82519d5fdc4f4245c1d476dc4ff1 100644
--- a/obj/NiPSysData.h
+++ b/obj/NiPSysData.h
@@ -15,7 +15,7 @@ typedef Ref<NiPSysData> NiPSysDataRef;
  * NiPSysData - Particle system data.
  */
 
-class DLLEXPORT NiPSysData : public NI_P_SYS_DATA_PARENT {
+class NIFLIB_API NiPSysData : public NI_P_SYS_DATA_PARENT {
 public:
 	NiPSysData();
 	~NiPSysData();
diff --git a/obj/NiPSysDragModifier.h b/obj/NiPSysDragModifier.h
index c2aefd12bf8f4ad62b43a08b814ef9c3ef33bab7..7e4c0ff8c6de80ad985834dbd36f2731c9e3e7c2 100644
--- a/obj/NiPSysDragModifier.h
+++ b/obj/NiPSysDragModifier.h
@@ -19,7 +19,7 @@ typedef Ref<NiPSysDragModifier> NiPSysDragModifierRef;
  * NiPSysDragModifier - Unknown.
  */
 
-class DLLEXPORT NiPSysDragModifier : public NI_P_SYS_DRAG_MODIFIER_PARENT {
+class NIFLIB_API NiPSysDragModifier : public NI_P_SYS_DRAG_MODIFIER_PARENT {
 public:
 	NiPSysDragModifier();
 	~NiPSysDragModifier();
diff --git a/obj/NiPSysEmitter.h b/obj/NiPSysEmitter.h
index d51c7cd804826b951aece23a46ddc8ddcd1d9039..6d4b234ab884687c047d8b252b735ba57ffb06a9 100644
--- a/obj/NiPSysEmitter.h
+++ b/obj/NiPSysEmitter.h
@@ -15,7 +15,7 @@ typedef Ref<NiPSysEmitter> NiPSysEmitterRef;
  * NiPSysEmitter - A particle emitter modifier?
  */
 
-class DLLEXPORT NiPSysEmitter : public NI_P_SYS_EMITTER_PARENT {
+class NIFLIB_API NiPSysEmitter : public NI_P_SYS_EMITTER_PARENT {
 public:
 	NiPSysEmitter();
 	~NiPSysEmitter();
diff --git a/obj/NiPSysEmitterCtlr.h b/obj/NiPSysEmitterCtlr.h
index b3e43a71ab40fabf5b9a234bf89177fa2ec7eeb7..d989e48952088d7b7c8779bf4520bb0f748195eb 100644
--- a/obj/NiPSysEmitterCtlr.h
+++ b/obj/NiPSysEmitterCtlr.h
@@ -19,7 +19,7 @@ typedef Ref<NiPSysEmitterCtlr> NiPSysEmitterCtlrRef;
  * NiPSysEmitterCtlr - Particle system emitter controller.
  */
 
-class DLLEXPORT NiPSysEmitterCtlr : public NI_P_SYS_EMITTER_CTLR_PARENT {
+class NIFLIB_API NiPSysEmitterCtlr : public NI_P_SYS_EMITTER_CTLR_PARENT {
 public:
 	NiPSysEmitterCtlr();
 	~NiPSysEmitterCtlr();
diff --git a/obj/NiPSysEmitterCtlrData.h b/obj/NiPSysEmitterCtlrData.h
index 1f7f54e8566af1b5ac81e3f2854f36b9466b2f0a..360a9636382344535f11951fc86b0d22ce81621b 100644
--- a/obj/NiPSysEmitterCtlrData.h
+++ b/obj/NiPSysEmitterCtlrData.h
@@ -17,7 +17,7 @@ typedef Ref<NiPSysEmitterCtlrData> NiPSysEmitterCtlrDataRef;
  * NiPSysEmitterCtlrData - Particle system emitter controller data.
  */
 
-class DLLEXPORT NiPSysEmitterCtlrData : public NI_P_SYS_EMITTER_CTLR_DATA_PARENT {
+class NIFLIB_API NiPSysEmitterCtlrData : public NI_P_SYS_EMITTER_CTLR_DATA_PARENT {
 public:
 	NiPSysEmitterCtlrData();
 	~NiPSysEmitterCtlrData();
diff --git a/obj/NiPSysEmitterDeclinationCtlr.h b/obj/NiPSysEmitterDeclinationCtlr.h
index b62051a8013807b31e0e6aac3758589afd3e2d8c..24724826b5ce5bccdfa7176632916b2afd893cf4 100644
--- a/obj/NiPSysEmitterDeclinationCtlr.h
+++ b/obj/NiPSysEmitterDeclinationCtlr.h
@@ -15,7 +15,7 @@ typedef Ref<NiPSysEmitterDeclinationCtlr> NiPSysEmitterDeclinationCtlrRef;
  * NiPSysEmitterDeclinationCtlr - Unknown.
  */
 
-class DLLEXPORT NiPSysEmitterDeclinationCtlr : public NI_P_SYS_EMITTER_DECLINATION_CTLR_PARENT {
+class NIFLIB_API NiPSysEmitterDeclinationCtlr : public NI_P_SYS_EMITTER_DECLINATION_CTLR_PARENT {
 public:
 	NiPSysEmitterDeclinationCtlr();
 	~NiPSysEmitterDeclinationCtlr();
diff --git a/obj/NiPSysEmitterDeclinationVarCtlr.h b/obj/NiPSysEmitterDeclinationVarCtlr.h
index bdb739e4889a411d03015731dc97db51ca33875e..cfe590add71cdf0456ffa3134e0705178c9ed72b 100644
--- a/obj/NiPSysEmitterDeclinationVarCtlr.h
+++ b/obj/NiPSysEmitterDeclinationVarCtlr.h
@@ -15,7 +15,7 @@ typedef Ref<NiPSysEmitterDeclinationVarCtlr> NiPSysEmitterDeclinationVarCtlrRef;
  * NiPSysEmitterDeclinationVarCtlr - Unknown.
  */
 
-class DLLEXPORT NiPSysEmitterDeclinationVarCtlr : public NI_P_SYS_EMITTER_DECLINATION_VAR_CTLR_PARENT {
+class NIFLIB_API NiPSysEmitterDeclinationVarCtlr : public NI_P_SYS_EMITTER_DECLINATION_VAR_CTLR_PARENT {
 public:
 	NiPSysEmitterDeclinationVarCtlr();
 	~NiPSysEmitterDeclinationVarCtlr();
diff --git a/obj/NiPSysEmitterInitialRadiusCtlr.h b/obj/NiPSysEmitterInitialRadiusCtlr.h
index 1c6357251f5b8b07beee6e9315c717a59a831797..059f1e6184db7a4adfaa63fea918002273ad0ab0 100644
--- a/obj/NiPSysEmitterInitialRadiusCtlr.h
+++ b/obj/NiPSysEmitterInitialRadiusCtlr.h
@@ -15,7 +15,7 @@ typedef Ref<NiPSysEmitterInitialRadiusCtlr> NiPSysEmitterInitialRadiusCtlrRef;
  * NiPSysEmitterInitialRadiusCtlr - Unknown.
  */
 
-class DLLEXPORT NiPSysEmitterInitialRadiusCtlr : public NI_P_SYS_EMITTER_INITIAL_RADIUS_CTLR_PARENT {
+class NIFLIB_API NiPSysEmitterInitialRadiusCtlr : public NI_P_SYS_EMITTER_INITIAL_RADIUS_CTLR_PARENT {
 public:
 	NiPSysEmitterInitialRadiusCtlr();
 	~NiPSysEmitterInitialRadiusCtlr();
diff --git a/obj/NiPSysEmitterLifeSpanCtlr.h b/obj/NiPSysEmitterLifeSpanCtlr.h
index 41e2376ef37ce8b0f5bbb0d7f35656850a012e00..e5565ea6e08fef0513f029dbee09b4b7b9f11e33 100644
--- a/obj/NiPSysEmitterLifeSpanCtlr.h
+++ b/obj/NiPSysEmitterLifeSpanCtlr.h
@@ -15,7 +15,7 @@ typedef Ref<NiPSysEmitterLifeSpanCtlr> NiPSysEmitterLifeSpanCtlrRef;
  * NiPSysEmitterLifeSpanCtlr - Unknown.
  */
 
-class DLLEXPORT NiPSysEmitterLifeSpanCtlr : public NI_P_SYS_EMITTER_LIFE_SPAN_CTLR_PARENT {
+class NIFLIB_API NiPSysEmitterLifeSpanCtlr : public NI_P_SYS_EMITTER_LIFE_SPAN_CTLR_PARENT {
 public:
 	NiPSysEmitterLifeSpanCtlr();
 	~NiPSysEmitterLifeSpanCtlr();
diff --git a/obj/NiPSysEmitterSpeedCtlr.h b/obj/NiPSysEmitterSpeedCtlr.h
index a3eb6cae7a9401ecdc42536c93d1bcada3577b26..ae4c386280c7c835686ad2ab36c64b07c31a89e6 100644
--- a/obj/NiPSysEmitterSpeedCtlr.h
+++ b/obj/NiPSysEmitterSpeedCtlr.h
@@ -15,7 +15,7 @@ typedef Ref<NiPSysEmitterSpeedCtlr> NiPSysEmitterSpeedCtlrRef;
  * NiPSysEmitterSpeedCtlr - Unknown.
  */
 
-class DLLEXPORT NiPSysEmitterSpeedCtlr : public NI_P_SYS_EMITTER_SPEED_CTLR_PARENT {
+class NIFLIB_API NiPSysEmitterSpeedCtlr : public NI_P_SYS_EMITTER_SPEED_CTLR_PARENT {
 public:
 	NiPSysEmitterSpeedCtlr();
 	~NiPSysEmitterSpeedCtlr();
diff --git a/obj/NiPSysGravityModifier.h b/obj/NiPSysGravityModifier.h
index 54bcbbe516c108bfb4c31d9dbb515a4aee15ba54..41b803adb9958da2c0d539b4b61d8f1ce34aef55 100644
--- a/obj/NiPSysGravityModifier.h
+++ b/obj/NiPSysGravityModifier.h
@@ -19,7 +19,7 @@ typedef Ref<NiPSysGravityModifier> NiPSysGravityModifierRef;
  * NiPSysGravityModifier - Unknown particle system modifier.
  */
 
-class DLLEXPORT NiPSysGravityModifier : public NI_P_SYS_GRAVITY_MODIFIER_PARENT {
+class NIFLIB_API NiPSysGravityModifier : public NI_P_SYS_GRAVITY_MODIFIER_PARENT {
 public:
 	NiPSysGravityModifier();
 	~NiPSysGravityModifier();
diff --git a/obj/NiPSysGravityStrengthCtlr.h b/obj/NiPSysGravityStrengthCtlr.h
index 3a8ef9f151eff8189fdfba1dbda99a4e84e276a1..e832c7f8e9af1940e0a51a12f38d4d7d240f304e 100644
--- a/obj/NiPSysGravityStrengthCtlr.h
+++ b/obj/NiPSysGravityStrengthCtlr.h
@@ -15,7 +15,7 @@ typedef Ref<NiPSysGravityStrengthCtlr> NiPSysGravityStrengthCtlrRef;
  * NiPSysGravityStrengthCtlr - Unknown.
  */
 
-class DLLEXPORT NiPSysGravityStrengthCtlr : public NI_P_SYS_GRAVITY_STRENGTH_CTLR_PARENT {
+class NIFLIB_API NiPSysGravityStrengthCtlr : public NI_P_SYS_GRAVITY_STRENGTH_CTLR_PARENT {
 public:
 	NiPSysGravityStrengthCtlr();
 	~NiPSysGravityStrengthCtlr();
diff --git a/obj/NiPSysGrowFadeModifier.h b/obj/NiPSysGrowFadeModifier.h
index b0a05823d0a421585dcc81ea79436c83393a3b3d..220b3c46e4af20c1da74896994ec9eba93fc0bd5 100644
--- a/obj/NiPSysGrowFadeModifier.h
+++ b/obj/NiPSysGrowFadeModifier.h
@@ -15,7 +15,7 @@ typedef Ref<NiPSysGrowFadeModifier> NiPSysGrowFadeModifierRef;
  * NiPSysGrowFadeModifier - Unknown particle system modifier.
  */
 
-class DLLEXPORT NiPSysGrowFadeModifier : public NI_P_SYS_GROW_FADE_MODIFIER_PARENT {
+class NIFLIB_API NiPSysGrowFadeModifier : public NI_P_SYS_GROW_FADE_MODIFIER_PARENT {
 public:
 	NiPSysGrowFadeModifier();
 	~NiPSysGrowFadeModifier();
diff --git a/obj/NiPSysMeshEmitter.h b/obj/NiPSysMeshEmitter.h
index 829818bbe5d7874a1df9781972db6c3bd744b6dd..fdcc89151b1a6c42e9d94ffb375479788f39bc4f 100644
--- a/obj/NiPSysMeshEmitter.h
+++ b/obj/NiPSysMeshEmitter.h
@@ -19,7 +19,7 @@ typedef Ref<NiPSysMeshEmitter> NiPSysMeshEmitterRef;
  * NiPSysMeshEmitter - Unknown.
  */
 
-class DLLEXPORT NiPSysMeshEmitter : public NI_P_SYS_MESH_EMITTER_PARENT {
+class NIFLIB_API NiPSysMeshEmitter : public NI_P_SYS_MESH_EMITTER_PARENT {
 public:
 	NiPSysMeshEmitter();
 	~NiPSysMeshEmitter();
diff --git a/obj/NiPSysMeshUpdateModifier.h b/obj/NiPSysMeshUpdateModifier.h
index 53a9f1c5cb134b844fc0febba14a2d4b0fbf4107..68313cba1f5b5bd8be1772dffa56a0d402ccbbce 100644
--- a/obj/NiPSysMeshUpdateModifier.h
+++ b/obj/NiPSysMeshUpdateModifier.h
@@ -19,7 +19,7 @@ typedef Ref<NiPSysMeshUpdateModifier> NiPSysMeshUpdateModifierRef;
  * NiPSysMeshUpdateModifier - Unknown.
  */
 
-class DLLEXPORT NiPSysMeshUpdateModifier : public NI_P_SYS_MESH_UPDATE_MODIFIER_PARENT {
+class NIFLIB_API NiPSysMeshUpdateModifier : public NI_P_SYS_MESH_UPDATE_MODIFIER_PARENT {
 public:
 	NiPSysMeshUpdateModifier();
 	~NiPSysMeshUpdateModifier();
diff --git a/obj/NiPSysModifier.h b/obj/NiPSysModifier.h
index 73a3999cb9b7cf449cf33fe1210f78552d90b4d8..5cd18ae0b782ead966075f853aa82c6767134d00 100644
--- a/obj/NiPSysModifier.h
+++ b/obj/NiPSysModifier.h
@@ -19,7 +19,7 @@ typedef Ref<NiPSysModifier> NiPSysModifierRef;
  * NiPSysModifier - Generic particle system modifier block.
  */
 
-class DLLEXPORT NiPSysModifier : public NI_P_SYS_MODIFIER_PARENT {
+class NIFLIB_API NiPSysModifier : public NI_P_SYS_MODIFIER_PARENT {
 public:
 	NiPSysModifier();
 	~NiPSysModifier();
diff --git a/obj/NiPSysModifierActiveCtlr.h b/obj/NiPSysModifierActiveCtlr.h
index 4806cff16a1c074908dfb6c5af50f2687e18c88f..4f5b63139f727fce415c534a923c3122e13f43ff 100644
--- a/obj/NiPSysModifierActiveCtlr.h
+++ b/obj/NiPSysModifierActiveCtlr.h
@@ -15,7 +15,7 @@ typedef Ref<NiPSysModifierActiveCtlr> NiPSysModifierActiveCtlrRef;
  * NiPSysModifierActiveCtlr - Unknown.
  */
 
-class DLLEXPORT NiPSysModifierActiveCtlr : public NI_P_SYS_MODIFIER_ACTIVE_CTLR_PARENT {
+class NIFLIB_API NiPSysModifierActiveCtlr : public NI_P_SYS_MODIFIER_ACTIVE_CTLR_PARENT {
 public:
 	NiPSysModifierActiveCtlr();
 	~NiPSysModifierActiveCtlr();
diff --git a/obj/NiPSysPlanarCollider.h b/obj/NiPSysPlanarCollider.h
index bba91b73804da1540ad11b42f2ff8cbb88525993..f3122ee80347c7f0d0beccba6a26c8afae07e155 100644
--- a/obj/NiPSysPlanarCollider.h
+++ b/obj/NiPSysPlanarCollider.h
@@ -21,7 +21,7 @@ typedef Ref<NiPSysPlanarCollider> NiPSysPlanarColliderRef;
  * NiPSysPlanarCollider - Unknown.
  */
 
-class DLLEXPORT NiPSysPlanarCollider : public NI_P_SYS_PLANAR_COLLIDER_PARENT {
+class NIFLIB_API NiPSysPlanarCollider : public NI_P_SYS_PLANAR_COLLIDER_PARENT {
 public:
 	NiPSysPlanarCollider();
 	~NiPSysPlanarCollider();
diff --git a/obj/NiPSysPositionModifier.h b/obj/NiPSysPositionModifier.h
index 605b14e64944acf3269ca74142267d2b416a4f66..ae2f0ec354ff5dea2d859c4f91cc687fd39a69eb 100644
--- a/obj/NiPSysPositionModifier.h
+++ b/obj/NiPSysPositionModifier.h
@@ -15,7 +15,7 @@ typedef Ref<NiPSysPositionModifier> NiPSysPositionModifierRef;
  * NiPSysPositionModifier - Unknown particle system modifier.
  */
 
-class DLLEXPORT NiPSysPositionModifier : public NI_P_SYS_POSITION_MODIFIER_PARENT {
+class NIFLIB_API NiPSysPositionModifier : public NI_P_SYS_POSITION_MODIFIER_PARENT {
 public:
 	NiPSysPositionModifier();
 	~NiPSysPositionModifier();
diff --git a/obj/NiPSysResetOnLoopCtlr.h b/obj/NiPSysResetOnLoopCtlr.h
index b77e85fcc528959e80ac30b88d80ece649cbbb95..b2de68f2096369b591cbc8c18b363f2f0e625f17 100644
--- a/obj/NiPSysResetOnLoopCtlr.h
+++ b/obj/NiPSysResetOnLoopCtlr.h
@@ -15,7 +15,7 @@ typedef Ref<NiPSysResetOnLoopCtlr> NiPSysResetOnLoopCtlrRef;
  * NiPSysResetOnLoopCtlr - Unknown.
  */
 
-class DLLEXPORT NiPSysResetOnLoopCtlr : public NI_P_SYS_RESET_ON_LOOP_CTLR_PARENT {
+class NIFLIB_API NiPSysResetOnLoopCtlr : public NI_P_SYS_RESET_ON_LOOP_CTLR_PARENT {
 public:
 	NiPSysResetOnLoopCtlr();
 	~NiPSysResetOnLoopCtlr();
diff --git a/obj/NiPSysRotationModifier.h b/obj/NiPSysRotationModifier.h
index 2ec785cc1f43ffd73d2702b94f1df581e7ca2320..8aa680240167eb51e47d4e28028eccb5c7086101 100644
--- a/obj/NiPSysRotationModifier.h
+++ b/obj/NiPSysRotationModifier.h
@@ -15,7 +15,7 @@ typedef Ref<NiPSysRotationModifier> NiPSysRotationModifierRef;
  * NiPSysRotationModifier - Unknown particle system modifier.
  */
 
-class DLLEXPORT NiPSysRotationModifier : public NI_P_SYS_ROTATION_MODIFIER_PARENT {
+class NIFLIB_API NiPSysRotationModifier : public NI_P_SYS_ROTATION_MODIFIER_PARENT {
 public:
 	NiPSysRotationModifier();
 	~NiPSysRotationModifier();
diff --git a/obj/NiPSysSpawnModifier.h b/obj/NiPSysSpawnModifier.h
index a0aa697612cfe1b787922870e5f31fe68c9c5d95..0147da70087ed607953979e6377eccc292cf1328 100644
--- a/obj/NiPSysSpawnModifier.h
+++ b/obj/NiPSysSpawnModifier.h
@@ -15,7 +15,7 @@ typedef Ref<NiPSysSpawnModifier> NiPSysSpawnModifierRef;
  * NiPSysSpawnModifier - Unknown particle modifier.
  */
 
-class DLLEXPORT NiPSysSpawnModifier : public NI_P_SYS_SPAWN_MODIFIER_PARENT {
+class NIFLIB_API NiPSysSpawnModifier : public NI_P_SYS_SPAWN_MODIFIER_PARENT {
 public:
 	NiPSysSpawnModifier();
 	~NiPSysSpawnModifier();
diff --git a/obj/NiPSysSphereEmitter.h b/obj/NiPSysSphereEmitter.h
index ed1473340448134074629717f33b1d930c34aec8..235b98eabd3987c0bdbc8f18b6036e3bb1c9c736 100644
--- a/obj/NiPSysSphereEmitter.h
+++ b/obj/NiPSysSphereEmitter.h
@@ -15,7 +15,7 @@ typedef Ref<NiPSysSphereEmitter> NiPSysSphereEmitterRef;
  * NiPSysSphereEmitter - Unknown.
  */
 
-class DLLEXPORT NiPSysSphereEmitter : public NI_P_SYS_SPHERE_EMITTER_PARENT {
+class NIFLIB_API NiPSysSphereEmitter : public NI_P_SYS_SPHERE_EMITTER_PARENT {
 public:
 	NiPSysSphereEmitter();
 	~NiPSysSphereEmitter();
diff --git a/obj/NiPSysUpdateCtlr.h b/obj/NiPSysUpdateCtlr.h
index 90fe41f7251598a58f95531617c71d16709f81f4..1f6b07f029d47d04e2b743f574084d6df68dfbb3 100644
--- a/obj/NiPSysUpdateCtlr.h
+++ b/obj/NiPSysUpdateCtlr.h
@@ -15,7 +15,7 @@ typedef Ref<NiPSysUpdateCtlr> NiPSysUpdateCtlrRef;
  * NiPSysUpdateCtlr - Particle system controller, used for ???.
  */
 
-class DLLEXPORT NiPSysUpdateCtlr : public NI_P_SYS_UPDATE_CTLR_PARENT {
+class NIFLIB_API NiPSysUpdateCtlr : public NI_P_SYS_UPDATE_CTLR_PARENT {
 public:
 	NiPSysUpdateCtlr();
 	~NiPSysUpdateCtlr();
diff --git a/obj/NiPSysVolumeEmitter.h b/obj/NiPSysVolumeEmitter.h
index e1e383b92a5c0a47cf720ba5bb6325cbf0ab76c7..a8963f332189074431b24aa5107ab4906efc88a5 100644
--- a/obj/NiPSysVolumeEmitter.h
+++ b/obj/NiPSysVolumeEmitter.h
@@ -19,7 +19,7 @@ typedef Ref<NiPSysVolumeEmitter> NiPSysVolumeEmitterRef;
  * NiPSysVolumeEmitter - An emitter that emits meshes?
  */
 
-class DLLEXPORT NiPSysVolumeEmitter : public NI_P_SYS_VOLUME_EMITTER_PARENT {
+class NIFLIB_API NiPSysVolumeEmitter : public NI_P_SYS_VOLUME_EMITTER_PARENT {
 public:
 	NiPSysVolumeEmitter();
 	~NiPSysVolumeEmitter();
diff --git a/obj/NiPalette.h b/obj/NiPalette.h
index a82b954ec02ca5c7a49957aef3418b3cadfdb513..ecd59668610b833e3cf8c763fbdb996315dccb68 100644
--- a/obj/NiPalette.h
+++ b/obj/NiPalette.h
@@ -15,7 +15,7 @@ typedef Ref<NiPalette> NiPaletteRef;
  * NiPalette - A color palette.
  */
 
-class DLLEXPORT NiPalette : public NI_PALETTE_PARENT {
+class NIFLIB_API NiPalette : public NI_PALETTE_PARENT {
 public:
 	NiPalette();
 	~NiPalette();
diff --git a/obj/NiParticleBomb.h b/obj/NiParticleBomb.h
index 5ff48ad87219dca4eaf79dbab5efa4508dced477..f2a041e57f16f065fa710e8274d0ae4d5e9541e0 100644
--- a/obj/NiParticleBomb.h
+++ b/obj/NiParticleBomb.h
@@ -15,7 +15,7 @@ typedef Ref<NiParticleBomb> NiParticleBombRef;
  * NiParticleBomb - A particle modifier.
  */
 
-class DLLEXPORT NiParticleBomb : public NI_PARTICLE_BOMB_PARENT {
+class NIFLIB_API NiParticleBomb : public NI_PARTICLE_BOMB_PARENT {
 public:
 	NiParticleBomb();
 	~NiParticleBomb();
diff --git a/obj/NiParticleColorModifier.h b/obj/NiParticleColorModifier.h
index 6810c0a3a62a094c7429352394a55a375e2e0c15..3b30a012709aadafc7753ca8ae223d4cd13f1692 100644
--- a/obj/NiParticleColorModifier.h
+++ b/obj/NiParticleColorModifier.h
@@ -19,7 +19,7 @@ typedef Ref<NiParticleColorModifier> NiParticleColorModifierRef;
  * NiParticleColorModifier - Unknown.
  */
 
-class DLLEXPORT NiParticleColorModifier : public NI_PARTICLE_COLOR_MODIFIER_PARENT {
+class NIFLIB_API NiParticleColorModifier : public NI_PARTICLE_COLOR_MODIFIER_PARENT {
 public:
 	NiParticleColorModifier();
 	~NiParticleColorModifier();
diff --git a/obj/NiParticleGrowFade.h b/obj/NiParticleGrowFade.h
index b6ab09961e6fb0a5fb7af7d9fcc2c3d280f7e798..004ddc531676abb4927e4b8862e9e0b5d92b949c 100644
--- a/obj/NiParticleGrowFade.h
+++ b/obj/NiParticleGrowFade.h
@@ -18,7 +18,7 @@ typedef Ref<NiParticleGrowFade> NiParticleGrowFadeRef;
  * to zero size again at the end of their lifetime cycle.
  */
 
-class DLLEXPORT NiParticleGrowFade : public NI_PARTICLE_GROW_FADE_PARENT {
+class NIFLIB_API NiParticleGrowFade : public NI_PARTICLE_GROW_FADE_PARENT {
 public:
 	NiParticleGrowFade();
 	~NiParticleGrowFade();
diff --git a/obj/NiParticleMeshModifier.h b/obj/NiParticleMeshModifier.h
index 188214595a42744d1f2255eb8369ebb66e58302a..537c6de08a31ddaa07e8d10e6b7db8f10e3ada0b 100644
--- a/obj/NiParticleMeshModifier.h
+++ b/obj/NiParticleMeshModifier.h
@@ -19,7 +19,7 @@ typedef Ref<NiParticleMeshModifier> NiParticleMeshModifierRef;
  * NiParticleMeshModifier - Unknown.
  */
 
-class DLLEXPORT NiParticleMeshModifier : public NI_PARTICLE_MESH_MODIFIER_PARENT {
+class NIFLIB_API NiParticleMeshModifier : public NI_PARTICLE_MESH_MODIFIER_PARENT {
 public:
 	NiParticleMeshModifier();
 	~NiParticleMeshModifier();
diff --git a/obj/NiParticleMeshes.h b/obj/NiParticleMeshes.h
index 9f095a4948e15e30e2030a7b4cde363081d79c1c..af83c3c069fe74f11ddd8cd3c343a9d6ca2f3ab5 100644
--- a/obj/NiParticleMeshes.h
+++ b/obj/NiParticleMeshes.h
@@ -15,7 +15,7 @@ typedef Ref<NiParticleMeshes> NiParticleMeshesRef;
  * NiParticleMeshes - Mesh particle node?
  */
 
-class DLLEXPORT NiParticleMeshes : public NI_PARTICLE_MESHES_PARENT {
+class NIFLIB_API NiParticleMeshes : public NI_PARTICLE_MESHES_PARENT {
 public:
 	NiParticleMeshes();
 	~NiParticleMeshes();
diff --git a/obj/NiParticleMeshesData.h b/obj/NiParticleMeshesData.h
index dbacb8aa60df4c88a70c5743a83802e32c421ad1..3b6698e3cf79dd9c3883d2ce6190af133abbed40 100644
--- a/obj/NiParticleMeshesData.h
+++ b/obj/NiParticleMeshesData.h
@@ -19,7 +19,7 @@ typedef Ref<NiParticleMeshesData> NiParticleMeshesDataRef;
  * NiParticleMeshesData - Particle meshes data.
  */
 
-class DLLEXPORT NiParticleMeshesData : public NI_PARTICLE_MESHES_DATA_PARENT {
+class NIFLIB_API NiParticleMeshesData : public NI_PARTICLE_MESHES_DATA_PARENT {
 public:
 	NiParticleMeshesData();
 	~NiParticleMeshesData();
diff --git a/obj/NiParticleRotation.h b/obj/NiParticleRotation.h
index f2ed832d3c26053c2ae7cdf0991cfedea5b0f380..f2e753d29808617ec7e19b50e9c70be647dc044a 100644
--- a/obj/NiParticleRotation.h
+++ b/obj/NiParticleRotation.h
@@ -15,7 +15,7 @@ typedef Ref<NiParticleRotation> NiParticleRotationRef;
  * NiParticleRotation - Unknown.
  */
 
-class DLLEXPORT NiParticleRotation : public NI_PARTICLE_ROTATION_PARENT {
+class NIFLIB_API NiParticleRotation : public NI_PARTICLE_ROTATION_PARENT {
 public:
 	NiParticleRotation();
 	~NiParticleRotation();
diff --git a/obj/NiParticleSystem.h b/obj/NiParticleSystem.h
index 45b8fc1ba56fc3d47d4477e1bdf914ae1f85d5c9..3bde2cce0edc3cbf19ea9f8451e11ac504a543f1 100644
--- a/obj/NiParticleSystem.h
+++ b/obj/NiParticleSystem.h
@@ -19,7 +19,7 @@ typedef Ref<NiParticleSystem> NiParticleSystemRef;
  * NiParticleSystem - A particle system.
  */
 
-class DLLEXPORT NiParticleSystem : public NI_PARTICLE_SYSTEM_PARENT {
+class NIFLIB_API NiParticleSystem : public NI_PARTICLE_SYSTEM_PARENT {
 public:
 	NiParticleSystem();
 	~NiParticleSystem();
diff --git a/obj/NiParticleSystemController.h b/obj/NiParticleSystemController.h
index 77688d1d86ad71646eb2be7dc1b70df3e03fc5a1..0a11c1b5fdcc258cd2aeed82b2d9cb0cd01f293a 100644
--- a/obj/NiParticleSystemController.h
+++ b/obj/NiParticleSystemController.h
@@ -23,7 +23,7 @@ typedef Ref<NiParticleSystemController> NiParticleSystemControllerRef;
  * block.
  */
 
-class DLLEXPORT NiParticleSystemController : public NI_PARTICLE_SYSTEM_CONTROLLER_PARENT {
+class NIFLIB_API NiParticleSystemController : public NI_PARTICLE_SYSTEM_CONTROLLER_PARENT {
 public:
 	NiParticleSystemController();
 	~NiParticleSystemController();
diff --git a/obj/NiParticles.h b/obj/NiParticles.h
index 3fee9abc70d4876513f60101e3b0a714f3464c1d..d157a9f6853d45fca1bfd5121650907826e3cc6e 100644
--- a/obj/NiParticles.h
+++ b/obj/NiParticles.h
@@ -15,7 +15,7 @@ typedef Ref<NiParticles> NiParticlesRef;
  * NiParticles - Generic particle system node.
  */
 
-class DLLEXPORT NiParticles : public NI_PARTICLES_PARENT {
+class NIFLIB_API NiParticles : public NI_PARTICLES_PARENT {
 public:
 	NiParticles();
 	~NiParticles();
diff --git a/obj/NiParticlesData.h b/obj/NiParticlesData.h
index 03876e4f56dc6930f3b6f1c3273397a36d074abf..6dec71d694494cf146e95c2bf567a073e9bdc95d 100644
--- a/obj/NiParticlesData.h
+++ b/obj/NiParticlesData.h
@@ -15,7 +15,7 @@ typedef Ref<NiParticlesData> NiParticlesDataRef;
  * NiParticlesData - Generic rotating particles data block.
  */
 
-class DLLEXPORT NiParticlesData : public NI_PARTICLES_DATA_PARENT {
+class NIFLIB_API NiParticlesData : public NI_PARTICLES_DATA_PARENT {
 public:
 	NiParticlesData();
 	~NiParticlesData();
diff --git a/obj/NiPathController.h b/obj/NiPathController.h
index f2ed153a201720c22c4b174f6875973fd5492874..ef898b5c5eec31072b737e718274708f0c0c2bd7 100644
--- a/obj/NiPathController.h
+++ b/obj/NiPathController.h
@@ -20,7 +20,7 @@ typedef Ref<NiPathController> NiPathControllerRef;
  * NiPathController - Time controller for a path.
  */
 
-class DLLEXPORT NiPathController : public NI_PATH_CONTROLLER_PARENT {
+class NIFLIB_API NiPathController : public NI_PATH_CONTROLLER_PARENT {
 public:
 	NiPathController();
 	~NiPathController();
diff --git a/obj/NiPathInterpolator.h b/obj/NiPathInterpolator.h
index 93dbc86cf98008a3ccd982ea10b4703ad6717b53..0c0a324bb41366fa3c5060c84c6fbd86c8955bab 100644
--- a/obj/NiPathInterpolator.h
+++ b/obj/NiPathInterpolator.h
@@ -20,7 +20,7 @@ typedef Ref<NiPathInterpolator> NiPathInterpolatorRef;
  * NiPathInterpolator - Unknown interpolator.
  */
 
-class DLLEXPORT NiPathInterpolator : public NI_PATH_INTERPOLATOR_PARENT {
+class NIFLIB_API NiPathInterpolator : public NI_PATH_INTERPOLATOR_PARENT {
 public:
 	NiPathInterpolator();
 	~NiPathInterpolator();
diff --git a/obj/NiPixelData.h b/obj/NiPixelData.h
index 8ea210e46dd1e80e6febc7f156349bd33c113213..619c040b6b5e86f88acdd6f2eba329f82f1da99a 100644
--- a/obj/NiPixelData.h
+++ b/obj/NiPixelData.h
@@ -22,7 +22,7 @@ typedef Ref<NiPixelData> NiPixelDataRef;
  * NiPixelData - A texture.
  */
 
-class DLLEXPORT NiPixelData : public NI_PIXEL_DATA_PARENT {
+class NIFLIB_API NiPixelData : public NI_PIXEL_DATA_PARENT {
 public:
 	NiPixelData();
 	~NiPixelData();
diff --git a/obj/NiPlanarCollider.h b/obj/NiPlanarCollider.h
index adebfb823e780a802af5b0d218a5f6f2f4d26e9f..af22af457ee78f7a0a717dd82fe82796b030699f 100644
--- a/obj/NiPlanarCollider.h
+++ b/obj/NiPlanarCollider.h
@@ -15,7 +15,7 @@ typedef Ref<NiPlanarCollider> NiPlanarColliderRef;
  * NiPlanarCollider - Unknown.
  */
 
-class DLLEXPORT NiPlanarCollider : public NI_PLANAR_COLLIDER_PARENT {
+class NIFLIB_API NiPlanarCollider : public NI_PLANAR_COLLIDER_PARENT {
 public:
 	NiPlanarCollider();
 	~NiPlanarCollider();
diff --git a/obj/NiPoint3Interpolator.h b/obj/NiPoint3Interpolator.h
index 7474b907ee0fba80bd6938580645ad74c3e68d73..f4dec7d3c993fdadde9cecfb363c9dc251d617f9 100644
--- a/obj/NiPoint3Interpolator.h
+++ b/obj/NiPoint3Interpolator.h
@@ -19,7 +19,7 @@ typedef Ref<NiPoint3Interpolator> NiPoint3InterpolatorRef;
  * NiPoint3Interpolator - Unknown.
  */
 
-class DLLEXPORT NiPoint3Interpolator : public NI_POINT3_INTERPOLATOR_PARENT {
+class NIFLIB_API NiPoint3Interpolator : public NI_POINT3_INTERPOLATOR_PARENT {
 public:
 	NiPoint3Interpolator();
 	~NiPoint3Interpolator();
diff --git a/obj/NiPointLight.h b/obj/NiPointLight.h
index 5fce9ca525f826f5692ea8ba24bd57ba2a808e49..67613623420aa20cbd3c682bac9b2b67c94161eb 100644
--- a/obj/NiPointLight.h
+++ b/obj/NiPointLight.h
@@ -15,7 +15,7 @@ typedef Ref<NiPointLight> NiPointLightRef;
  * NiPointLight - A point light.
  */
 
-class DLLEXPORT NiPointLight : public NI_POINT_LIGHT_PARENT {
+class NIFLIB_API NiPointLight : public NI_POINT_LIGHT_PARENT {
 public:
 	NiPointLight();
 	~NiPointLight();
diff --git a/obj/NiPosData.h b/obj/NiPosData.h
index a1c00aa1a312dbef50cbb9777b20a3a584e151d0..b7d1e57c570d69b3be068262ede73ab414d6a47a 100644
--- a/obj/NiPosData.h
+++ b/obj/NiPosData.h
@@ -17,7 +17,7 @@ typedef Ref<NiPosData> NiPosDataRef;
  * NiPosData - Position data.
  */
 
-class DLLEXPORT NiPosData : public NI_POS_DATA_PARENT {
+class NIFLIB_API NiPosData : public NI_POS_DATA_PARENT {
 public:
 	NiPosData();
 	~NiPosData();
diff --git a/obj/NiProperty.h b/obj/NiProperty.h
index 1d505ff308665f9585c96c2c667b489eee5d68f3..3ddbbecd50775f94d5c1681ee21aea2f49fce9a8 100644
--- a/obj/NiProperty.h
+++ b/obj/NiProperty.h
@@ -15,7 +15,7 @@ typedef Ref<NiProperty> NiPropertyRef;
  * NiProperty - A generic property block.
  */
 
-class DLLEXPORT NiProperty : public NI_PROPERTY_PARENT {
+class NIFLIB_API NiProperty : public NI_PROPERTY_PARENT {
 public:
 	NiProperty();
 	~NiProperty();
diff --git a/obj/NiRangeLODData.h b/obj/NiRangeLODData.h
index 0d0900e74680e833236583e5a587759fdd9b820f..857ad484f250347b13375f8348b404004691134e 100644
--- a/obj/NiRangeLODData.h
+++ b/obj/NiRangeLODData.h
@@ -17,7 +17,7 @@ typedef Ref<NiRangeLODData> NiRangeLODDataRef;
  * NiRangeLODData - Describes levels of detail.
  */
 
-class DLLEXPORT NiRangeLODData : public NI_RANGE_L_O_D_DATA_PARENT {
+class NIFLIB_API NiRangeLODData : public NI_RANGE_L_O_D_DATA_PARENT {
 public:
 	NiRangeLODData();
 	~NiRangeLODData();
diff --git a/obj/NiRotatingParticles.h b/obj/NiRotatingParticles.h
index 5876ba3e7a949583d6196589c80c444e33001a9e..00c2e101413cc2986ad93c8c136b67809e3444f8 100644
--- a/obj/NiRotatingParticles.h
+++ b/obj/NiRotatingParticles.h
@@ -15,7 +15,7 @@ typedef Ref<NiRotatingParticles> NiRotatingParticlesRef;
  * NiRotatingParticles - Unknown.
  */
 
-class DLLEXPORT NiRotatingParticles : public NI_ROTATING_PARTICLES_PARENT {
+class NIFLIB_API NiRotatingParticles : public NI_ROTATING_PARTICLES_PARENT {
 public:
 	NiRotatingParticles();
 	~NiRotatingParticles();
diff --git a/obj/NiRotatingParticlesData.h b/obj/NiRotatingParticlesData.h
index dfefb67dab3778f1cf4ab465eec6ae0300f7267d..954e780c6a99003fce4a96ae0f66036f52007b9f 100644
--- a/obj/NiRotatingParticlesData.h
+++ b/obj/NiRotatingParticlesData.h
@@ -15,7 +15,7 @@ typedef Ref<NiRotatingParticlesData> NiRotatingParticlesDataRef;
  * NiRotatingParticlesData - Rotating particles data block.
  */
 
-class DLLEXPORT NiRotatingParticlesData : public NI_ROTATING_PARTICLES_DATA_PARENT {
+class NIFLIB_API NiRotatingParticlesData : public NI_ROTATING_PARTICLES_DATA_PARENT {
 public:
 	NiRotatingParticlesData();
 	~NiRotatingParticlesData();
diff --git a/obj/NiScreenLODData.h b/obj/NiScreenLODData.h
index 98beeebb5510afdc5b6ed91e2a334f9777251eae..cd3e367fec88dcaf9445b799a5de6d81b7361eb8 100644
--- a/obj/NiScreenLODData.h
+++ b/obj/NiScreenLODData.h
@@ -15,7 +15,7 @@ typedef Ref<NiScreenLODData> NiScreenLODDataRef;
  * NiScreenLODData - Unknown.
  */
 
-class DLLEXPORT NiScreenLODData : public NI_SCREEN_L_O_D_DATA_PARENT {
+class NIFLIB_API NiScreenLODData : public NI_SCREEN_L_O_D_DATA_PARENT {
 public:
 	NiScreenLODData();
 	~NiScreenLODData();
diff --git a/obj/NiSequenceStreamHelper.h b/obj/NiSequenceStreamHelper.h
index c9a54b5cc65aab84375c41028f70eb64b888a8bf..fbb19eb1f1d5eb173e90d11565ed461b2a665d65 100644
--- a/obj/NiSequenceStreamHelper.h
+++ b/obj/NiSequenceStreamHelper.h
@@ -15,7 +15,7 @@ typedef Ref<NiSequenceStreamHelper> NiSequenceStreamHelperRef;
  * NiSequenceStreamHelper - Keyframe animation root node, in .kf files.
  */
 
-class DLLEXPORT NiSequenceStreamHelper : public NI_SEQUENCE_STREAM_HELPER_PARENT {
+class NIFLIB_API NiSequenceStreamHelper : public NI_SEQUENCE_STREAM_HELPER_PARENT {
 public:
 	NiSequenceStreamHelper();
 	~NiSequenceStreamHelper();
diff --git a/obj/NiShadeProperty.h b/obj/NiShadeProperty.h
index 71b71e2046c48689ce9ba512bc53c943b9e0f22b..e7b974b53ee59682bb341ba4f68af34c4daccd49 100644
--- a/obj/NiShadeProperty.h
+++ b/obj/NiShadeProperty.h
@@ -16,7 +16,7 @@ typedef Ref<NiShadeProperty> NiShadePropertyRef;
  * used on a shape.
  */
 
-class DLLEXPORT NiShadeProperty : public NI_SHADE_PROPERTY_PARENT {
+class NIFLIB_API NiShadeProperty : public NI_SHADE_PROPERTY_PARENT {
 public:
 	NiShadeProperty();
 	~NiShadeProperty();
diff --git a/obj/NiSingleInterpolatorController.h b/obj/NiSingleInterpolatorController.h
index 0cd19df4e5259b95fba9772ec46e7fe17d45fc60..96203536671556d6af10701cea89b805f973ef36 100644
--- a/obj/NiSingleInterpolatorController.h
+++ b/obj/NiSingleInterpolatorController.h
@@ -20,7 +20,7 @@ typedef Ref<NiSingleInterpolatorController> NiSingleInterpolatorControllerRef;
  * interpolator.
  */
 
-class DLLEXPORT NiSingleInterpolatorController : public NI_SINGLE_INTERPOLATOR_CONTROLLER_PARENT {
+class NIFLIB_API NiSingleInterpolatorController : public NI_SINGLE_INTERPOLATOR_CONTROLLER_PARENT {
 public:
 	NiSingleInterpolatorController();
 	~NiSingleInterpolatorController();
diff --git a/obj/NiSkinData.h b/obj/NiSkinData.h
index 084f2575bc5192beefc498a98b8da2dfa3cde5ea..c22a5812216ab269353a3a6a159a9d7e91f89f65 100644
--- a/obj/NiSkinData.h
+++ b/obj/NiSkinData.h
@@ -21,7 +21,7 @@ typedef Ref<NiSkinData> NiSkinDataRef;
  * NiSkinData - Skinning data.
  */
 
-class DLLEXPORT NiSkinData : public NI_SKIN_DATA_PARENT {
+class NIFLIB_API NiSkinData : public NI_SKIN_DATA_PARENT {
 public:
 	NiSkinData();
 	~NiSkinData();
diff --git a/obj/NiSkinInstance.h b/obj/NiSkinInstance.h
index 516ffd9046d2f2dd6a1dbbda5d428730a68fb444..bd795943748d203d4e2a2c20dd6ba921f9779eeb 100644
--- a/obj/NiSkinInstance.h
+++ b/obj/NiSkinInstance.h
@@ -23,7 +23,7 @@ typedef Ref<NiSkinInstance> NiSkinInstanceRef;
  * NiSkinInstance - Skinning instance.
  */
 
-class DLLEXPORT NiSkinInstance : public NI_SKIN_INSTANCE_PARENT {
+class NIFLIB_API NiSkinInstance : public NI_SKIN_INSTANCE_PARENT {
 public:
 	NiSkinInstance();
 	~NiSkinInstance();
diff --git a/obj/NiSkinPartition.h b/obj/NiSkinPartition.h
index 3c38b015c6d57de8e5d5b39ebdd3130fb63502fa..86015c48b0dde83be518d93dfa0a3b81359e404c 100644
--- a/obj/NiSkinPartition.h
+++ b/obj/NiSkinPartition.h
@@ -19,7 +19,7 @@ typedef Ref<NiSkinPartition> NiSkinPartitionRef;
  * influenced only by a limited and fixed number of bones.
  */
 
-class DLLEXPORT NiSkinPartition : public NI_SKIN_PARTITION_PARENT {
+class NIFLIB_API NiSkinPartition : public NI_SKIN_PARTITION_PARENT {
 public:
 	NiSkinPartition();
 	~NiSkinPartition();
diff --git a/obj/NiSourceTexture.h b/obj/NiSourceTexture.h
index 1a3387d2730c59b9f6fcbd083ddc1b42ce04cb04..e890233bdf5d65c8a5d3acfe8d4db3defaa6fe29 100644
--- a/obj/NiSourceTexture.h
+++ b/obj/NiSourceTexture.h
@@ -20,7 +20,7 @@ typedef Ref<NiSourceTexture> NiSourceTextureRef;
  * NiSourceTexture - Describes texture source and properties.
  */
 
-class DLLEXPORT NiSourceTexture : public NI_SOURCE_TEXTURE_PARENT {
+class NIFLIB_API NiSourceTexture : public NI_SOURCE_TEXTURE_PARENT {
 public:
 	NiSourceTexture();
 	~NiSourceTexture();
diff --git a/obj/NiSpecularProperty.h b/obj/NiSpecularProperty.h
index 9815437468a787d1091557b4c190dde3c333b062..fbb87b29dd0888979406dac15a0171b11677783d 100644
--- a/obj/NiSpecularProperty.h
+++ b/obj/NiSpecularProperty.h
@@ -15,7 +15,7 @@ typedef Ref<NiSpecularProperty> NiSpecularPropertyRef;
  * NiSpecularProperty - Gives specularity to a shape. Flags 0x0001.
  */
 
-class DLLEXPORT NiSpecularProperty : public NI_SPECULAR_PROPERTY_PARENT {
+class NIFLIB_API NiSpecularProperty : public NI_SPECULAR_PROPERTY_PARENT {
 public:
 	NiSpecularProperty();
 	~NiSpecularProperty();
diff --git a/obj/NiSphericalCollider.h b/obj/NiSphericalCollider.h
index 4740722c87a8bc3cbce8b53bc6261b847a178a58..c64d5602c0f1ed938185faf0a3a5acc46d0358dd 100644
--- a/obj/NiSphericalCollider.h
+++ b/obj/NiSphericalCollider.h
@@ -15,7 +15,7 @@ typedef Ref<NiSphericalCollider> NiSphericalColliderRef;
  * NiSphericalCollider - Unknown.
  */
 
-class DLLEXPORT NiSphericalCollider : public NI_SPHERICAL_COLLIDER_PARENT {
+class NIFLIB_API NiSphericalCollider : public NI_SPHERICAL_COLLIDER_PARENT {
 public:
 	NiSphericalCollider();
 	~NiSphericalCollider();
diff --git a/obj/NiSpotLight.h b/obj/NiSpotLight.h
index bfe54430fc504308d8506f443cf241804f7acdf0..f2146645f1df85ab588242783b0576bc0db9b66d 100644
--- a/obj/NiSpotLight.h
+++ b/obj/NiSpotLight.h
@@ -15,7 +15,7 @@ typedef Ref<NiSpotLight> NiSpotLightRef;
  * NiSpotLight - A spot.
  */
 
-class DLLEXPORT NiSpotLight : public NI_SPOT_LIGHT_PARENT {
+class NIFLIB_API NiSpotLight : public NI_SPOT_LIGHT_PARENT {
 public:
 	NiSpotLight();
 	~NiSpotLight();
diff --git a/obj/NiStencilProperty.h b/obj/NiStencilProperty.h
index c27f3b7c81809c75de78622f8e8d0d4668324854..be57453c02b839f31d0a8436e626263943e8ff04 100644
--- a/obj/NiStencilProperty.h
+++ b/obj/NiStencilProperty.h
@@ -15,7 +15,7 @@ typedef Ref<NiStencilProperty> NiStencilPropertyRef;
  * NiStencilProperty - Allows control of stencil testing.
  */
 
-class DLLEXPORT NiStencilProperty : public NI_STENCIL_PROPERTY_PARENT {
+class NIFLIB_API NiStencilProperty : public NI_STENCIL_PROPERTY_PARENT {
 public:
 	NiStencilProperty();
 	~NiStencilProperty();
diff --git a/obj/NiStringExtraData.h b/obj/NiStringExtraData.h
index 2e128f1d532b8dc8bbc4ab511c1793f8de3f0cad..6c99c274e122bc5644d8a5fe558b28c34e91dadc 100644
--- a/obj/NiStringExtraData.h
+++ b/obj/NiStringExtraData.h
@@ -17,7 +17,7 @@ typedef Ref<NiStringExtraData> NiStringExtraDataRef;
  * blocks (through their name) in animation .kf files.
  */
 
-class DLLEXPORT NiStringExtraData : public NI_STRING_EXTRA_DATA_PARENT {
+class NIFLIB_API NiStringExtraData : public NI_STRING_EXTRA_DATA_PARENT {
 public:
 	NiStringExtraData();
 	~NiStringExtraData();
diff --git a/obj/NiStringPalette.h b/obj/NiStringPalette.h
index c5e577b0fa5c4b75b2a18f14c11055042e5774f5..596d472732a00a9e4d367d244c2554be8e42a1a3 100644
--- a/obj/NiStringPalette.h
+++ b/obj/NiStringPalette.h
@@ -19,7 +19,7 @@ typedef Ref<NiStringPalette> NiStringPaletteRef;
  * conjunction with NiControllerSequence.
  */
 
-class DLLEXPORT NiStringPalette : public NI_STRING_PALETTE_PARENT {
+class NIFLIB_API NiStringPalette : public NI_STRING_PALETTE_PARENT {
 public:
 	NiStringPalette();
 	~NiStringPalette();
diff --git a/obj/NiStringsExtraData.h b/obj/NiStringsExtraData.h
index 501f09edd0908ad063ab86229f8bbeeed17cf3f7..5e455e0f4ac6727c5899658ac8031297b91f7b2f 100644
--- a/obj/NiStringsExtraData.h
+++ b/obj/NiStringsExtraData.h
@@ -16,7 +16,7 @@ typedef Ref<NiStringsExtraData> NiStringsExtraDataRef;
  * names.
  */
 
-class DLLEXPORT NiStringsExtraData : public NI_STRINGS_EXTRA_DATA_PARENT {
+class NIFLIB_API NiStringsExtraData : public NI_STRINGS_EXTRA_DATA_PARENT {
 public:
 	NiStringsExtraData();
 	~NiStringsExtraData();
diff --git a/obj/NiTextKeyExtraData.h b/obj/NiTextKeyExtraData.h
index f0c1e97a0b96ad0552c21dc2d7f65515af3feaab..c2c639f0f9d576dede71c3bc13b25981efa58ed2 100644
--- a/obj/NiTextKeyExtraData.h
+++ b/obj/NiTextKeyExtraData.h
@@ -16,7 +16,7 @@ typedef Ref<NiTextKeyExtraData> NiTextKeyExtraDataRef;
  * sequences.
  */
 
-class DLLEXPORT NiTextKeyExtraData : public NI_TEXT_KEY_EXTRA_DATA_PARENT {
+class NIFLIB_API NiTextKeyExtraData : public NI_TEXT_KEY_EXTRA_DATA_PARENT {
 public:
 	NiTextKeyExtraData();
 	~NiTextKeyExtraData();
diff --git a/obj/NiTextureEffect.h b/obj/NiTextureEffect.h
index 9f6d3d376c81f50acf34ae59f746a3908e44f2ab..787de92281512b51b857c4ccea47faa373cb40ef 100644
--- a/obj/NiTextureEffect.h
+++ b/obj/NiTextureEffect.h
@@ -22,7 +22,7 @@ typedef Ref<NiTextureEffect> NiTextureEffectRef;
  * bump map is ignored if no NiTextureEffect block is present).
  */
 
-class DLLEXPORT NiTextureEffect : public NI_TEXTURE_EFFECT_PARENT {
+class NIFLIB_API NiTextureEffect : public NI_TEXTURE_EFFECT_PARENT {
 public:
 	NiTextureEffect();
 	~NiTextureEffect();
diff --git a/obj/NiTextureTransformController.h b/obj/NiTextureTransformController.h
index 954797088d4cca26054e7dccb2623ad000d06ef9..1a55a8d69ed83088e07f64d8d6ea8fb46575a930 100644
--- a/obj/NiTextureTransformController.h
+++ b/obj/NiTextureTransformController.h
@@ -19,7 +19,7 @@ typedef Ref<NiTextureTransformController> NiTextureTransformControllerRef;
  * NiTextureTransformController - Texture transformation controller.
  */
 
-class DLLEXPORT NiTextureTransformController : public NI_TEXTURE_TRANSFORM_CONTROLLER_PARENT {
+class NIFLIB_API NiTextureTransformController : public NI_TEXTURE_TRANSFORM_CONTROLLER_PARENT {
 public:
 	NiTextureTransformController();
 	~NiTextureTransformController();
diff --git a/obj/NiTexturingProperty.cpp b/obj/NiTexturingProperty.cpp
index f10bb6e9a62c28b238fc28070bd338968f53a47c..59f7109258b2b3c0f257b63dede2776bafa1fa23 100644
--- a/obj/NiTexturingProperty.cpp
+++ b/obj/NiTexturingProperty.cpp
@@ -100,6 +100,9 @@ TexDesc NiTexturingProperty::GetTexture( int n ) const {
 		case DECAL_1_MAP:
 			return decal1Texture;
 	};
+
+	//If we get here, an invalid texture was requested.
+	throw runtime_error("Invalid texture requested.");
 }
 
 TexDesc NiTexturingProperty::GetShaderTexture( int n ) const {
diff --git a/obj/NiTexturingProperty.h b/obj/NiTexturingProperty.h
index eec6e33422dd5b35a0ecd49097701375b8548150..38cce00e5fd7b65edcbec12a61f2bb4a5f09c457 100644
--- a/obj/NiTexturingProperty.h
+++ b/obj/NiTexturingProperty.h
@@ -18,7 +18,7 @@ typedef Ref<NiTexturingProperty> NiTexturingPropertyRef;
  * NiTexturingProperty - Describes an object's textures.
  */
 
-class DLLEXPORT NiTexturingProperty : public NI_TEXTURING_PROPERTY_PARENT {
+class NIFLIB_API NiTexturingProperty : public NI_TEXTURING_PROPERTY_PARENT {
 public:
 	NiTexturingProperty();
 	~NiTexturingProperty();
diff --git a/obj/NiTimeController.h b/obj/NiTimeController.h
index e0b5f6ea413598b8dbdda5ca20cd011b3a3f3ca5..29b92e198c594e7e71652a931276b65644324e85 100644
--- a/obj/NiTimeController.h
+++ b/obj/NiTimeController.h
@@ -20,7 +20,7 @@ typedef Ref<NiTimeController> NiTimeControllerRef;
  * NiTimeController - A generic time controller block.
  */
 
-class DLLEXPORT NiTimeController : public NI_TIME_CONTROLLER_PARENT {
+class NIFLIB_API NiTimeController : public NI_TIME_CONTROLLER_PARENT {
 public:
 	NiTimeController();
 	~NiTimeController();
diff --git a/obj/NiTransformController.h b/obj/NiTransformController.h
index aa10a253f13a76a829f3e480dcf16fe902a649ed..a340e1db349ddfd044bde4313b87c761309fd1b8 100644
--- a/obj/NiTransformController.h
+++ b/obj/NiTransformController.h
@@ -16,7 +16,7 @@ typedef Ref<NiTransformController> NiTransformControllerRef;
  * NiKeyframeController.
  */
 
-class DLLEXPORT NiTransformController : public NI_TRANSFORM_CONTROLLER_PARENT {
+class NIFLIB_API NiTransformController : public NI_TRANSFORM_CONTROLLER_PARENT {
 public:
 	NiTransformController();
 	~NiTransformController();
diff --git a/obj/NiTransformData.h b/obj/NiTransformData.h
index 0ebf784f25bbd5403006ade61dc444ea030eddac..8944d41234dd9171aca6a2e3bae8238915ecf670 100644
--- a/obj/NiTransformData.h
+++ b/obj/NiTransformData.h
@@ -15,7 +15,7 @@ typedef Ref<NiTransformData> NiTransformDataRef;
  * NiTransformData - Mesh animation keyframe data.
  */
 
-class DLLEXPORT NiTransformData : public NI_TRANSFORM_DATA_PARENT {
+class NIFLIB_API NiTransformData : public NI_TRANSFORM_DATA_PARENT {
 public:
 	NiTransformData();
 	~NiTransformData();
diff --git a/obj/NiTransformInterpolator.h b/obj/NiTransformInterpolator.h
index d2fff7f5999a9126db645e66c20c67bd479de2c1..0b9d835afa427c531c49e89f9c10a95a938c814a 100644
--- a/obj/NiTransformInterpolator.h
+++ b/obj/NiTransformInterpolator.h
@@ -19,7 +19,7 @@ typedef Ref<NiTransformInterpolator> NiTransformInterpolatorRef;
  * NiTransformInterpolator - Unknown.
  */
 
-class DLLEXPORT NiTransformInterpolator : public NI_TRANSFORM_INTERPOLATOR_PARENT {
+class NIFLIB_API NiTransformInterpolator : public NI_TRANSFORM_INTERPOLATOR_PARENT {
 public:
 	NiTransformInterpolator();
 	~NiTransformInterpolator();
diff --git a/obj/NiTriBasedGeom.h b/obj/NiTriBasedGeom.h
index c79f5a1a0ecd46220ee925eafe660dc19fe92846..626528d555d4672676eac92969112439b3cf4c82 100644
--- a/obj/NiTriBasedGeom.h
+++ b/obj/NiTriBasedGeom.h
@@ -21,7 +21,7 @@ typedef Ref<NiTriBasedGeom> NiTriBasedGeomRef;
  * NiTriBasedGeom - Describes a mesh, built from triangles.
  */
 
-class DLLEXPORT NiTriBasedGeom : public NI_TRI_BASED_GEOM_PARENT {
+class NIFLIB_API NiTriBasedGeom : public NI_TRI_BASED_GEOM_PARENT {
 public:
 	NiTriBasedGeom();
 	~NiTriBasedGeom();
diff --git a/obj/NiTriBasedGeomData.h b/obj/NiTriBasedGeomData.h
index 73b63101148eb5b5ff88aaed150c62b07450bd9e..c6e65534ddd5050849f6b5d29c2760769ac86f7c 100644
--- a/obj/NiTriBasedGeomData.h
+++ b/obj/NiTriBasedGeomData.h
@@ -19,7 +19,7 @@ typedef Ref<NiTriBasedGeomData> NiTriBasedGeomDataRef;
  * NiTriBasedGeomData - Mesh data: vertices, vertex normals, etc.
  */
 
-class DLLEXPORT NiTriBasedGeomData : public NI_TRI_BASED_GEOM_DATA_PARENT {
+class NIFLIB_API NiTriBasedGeomData : public NI_TRI_BASED_GEOM_DATA_PARENT {
 public:
 	NiTriBasedGeomData();
 	~NiTriBasedGeomData();
diff --git a/obj/NiTriShape.h b/obj/NiTriShape.h
index 419018251ccf5fa27cd44460b7d7b371e256c6b9..3d94aa816bd64a80f89c073159ec56aab8355766 100644
--- a/obj/NiTriShape.h
+++ b/obj/NiTriShape.h
@@ -15,7 +15,7 @@ typedef Ref<NiTriShape> NiTriShapeRef;
  * NiTriShape - A shape node that refers to singular triangle data.
  */
 
-class DLLEXPORT NiTriShape : public NI_TRI_SHAPE_PARENT {
+class NIFLIB_API NiTriShape : public NI_TRI_SHAPE_PARENT {
 public:
 	NiTriShape();
 	~NiTriShape();
diff --git a/obj/NiTriShapeData.h b/obj/NiTriShapeData.h
index 553ffdec195dd204ab55025b9517b9a432dc50a3..25c6ef1d9f6b2b244234f251a47d51d4c1b438e2 100644
--- a/obj/NiTriShapeData.h
+++ b/obj/NiTriShapeData.h
@@ -17,7 +17,7 @@ typedef Ref<NiTriShapeData> NiTriShapeDataRef;
  * NiTriShapeData - Holds mesh data using a list of singular triangles.
  */
 
-class DLLEXPORT NiTriShapeData : public NI_TRI_SHAPE_DATA_PARENT {
+class NIFLIB_API NiTriShapeData : public NI_TRI_SHAPE_DATA_PARENT {
 public:
 	NiTriShapeData();
 	~NiTriShapeData();
diff --git a/obj/NiTriStrips.h b/obj/NiTriStrips.h
index d467e54efe8d22a1ba5c90d8fe41e6a98e4f9570..bf892a6ac998ad2cb952c78a9fec891639e7ab0c 100644
--- a/obj/NiTriStrips.h
+++ b/obj/NiTriStrips.h
@@ -16,7 +16,7 @@ typedef Ref<NiTriStrips> NiTriStripsRef;
  * of triangles
  */
 
-class DLLEXPORT NiTriStrips : public NI_TRI_STRIPS_PARENT {
+class NIFLIB_API NiTriStrips : public NI_TRI_STRIPS_PARENT {
 public:
 	NiTriStrips();
 	~NiTriStrips();
diff --git a/obj/NiTriStripsData.h b/obj/NiTriStripsData.h
index 23dadaf52a496f552c20ddd430d826f79042d372..54770950a4b4cda34564e2fdb7b60586615749c5 100644
--- a/obj/NiTriStripsData.h
+++ b/obj/NiTriStripsData.h
@@ -15,7 +15,7 @@ typedef Ref<NiTriStripsData> NiTriStripsDataRef;
  * NiTriStripsData - Holds mesh data using strips of triangles.
  */
 
-class DLLEXPORT NiTriStripsData : public NI_TRI_STRIPS_DATA_PARENT {
+class NIFLIB_API NiTriStripsData : public NI_TRI_STRIPS_DATA_PARENT {
 public:
 	NiTriStripsData();
 	~NiTriStripsData();
diff --git a/obj/NiUVController.h b/obj/NiUVController.h
index 7650ff50d8b84632ca30bdea31766295e0c51a3f..14371bc80a8c8038c697d2a875a64bd228ebf2ad 100644
--- a/obj/NiUVController.h
+++ b/obj/NiUVController.h
@@ -19,7 +19,7 @@ typedef Ref<NiUVController> NiUVControllerRef;
  * NiUVController - Time controller for texture coordinates.
  */
 
-class DLLEXPORT NiUVController : public NI_U_V_CONTROLLER_PARENT {
+class NIFLIB_API NiUVController : public NI_U_V_CONTROLLER_PARENT {
 public:
 	NiUVController();
 	~NiUVController();
diff --git a/obj/NiUVData.h b/obj/NiUVData.h
index 5d4b288e0745cc8e2a99cf9388b2fe4c0e76b839..59d36250d6c0cc15d386b4e1c161017c387f5379 100644
--- a/obj/NiUVData.h
+++ b/obj/NiUVData.h
@@ -17,7 +17,7 @@ typedef Ref<NiUVData> NiUVDataRef;
  * NiUVData - Texture coordinate data.
  */
 
-class DLLEXPORT NiUVData : public NI_U_V_DATA_PARENT {
+class NIFLIB_API NiUVData : public NI_U_V_DATA_PARENT {
 public:
 	NiUVData();
 	~NiUVData();
diff --git a/obj/NiVectorExtraData.h b/obj/NiVectorExtraData.h
index b5ade621ef26c76fb91d2a2468327528f479c034..a0b5a7bfbcac4fbcff8a489fe6d19b4fa3dec7cd 100644
--- a/obj/NiVectorExtraData.h
+++ b/obj/NiVectorExtraData.h
@@ -15,7 +15,7 @@ typedef Ref<NiVectorExtraData> NiVectorExtraDataRef;
  * NiVectorExtraData - Extra vector data.
  */
 
-class DLLEXPORT NiVectorExtraData : public NI_VECTOR_EXTRA_DATA_PARENT {
+class NIFLIB_API NiVectorExtraData : public NI_VECTOR_EXTRA_DATA_PARENT {
 public:
 	NiVectorExtraData();
 	~NiVectorExtraData();
diff --git a/obj/NiVertWeightsExtraData.h b/obj/NiVertWeightsExtraData.h
index 5d08f1c93db4c61bfc685f88cdc5e6664bbfadf6..75c10428066359e2bd127a0eab01ab9906c50a38 100644
--- a/obj/NiVertWeightsExtraData.h
+++ b/obj/NiVertWeightsExtraData.h
@@ -16,7 +16,7 @@ typedef Ref<NiVertWeightsExtraData> NiVertWeightsExtraDataRef;
  * for morphing animation or gravity.
  */
 
-class DLLEXPORT NiVertWeightsExtraData : public NI_VERT_WEIGHTS_EXTRA_DATA_PARENT {
+class NIFLIB_API NiVertWeightsExtraData : public NI_VERT_WEIGHTS_EXTRA_DATA_PARENT {
 public:
 	NiVertWeightsExtraData();
 	~NiVertWeightsExtraData();
diff --git a/obj/NiVertexColorProperty.h b/obj/NiVertexColorProperty.h
index 03449b329b9dc461d5cd315c0a23152b0edcf02d..8292930952ab549d919052974f9562cee2fef023 100644
--- a/obj/NiVertexColorProperty.h
+++ b/obj/NiVertexColorProperty.h
@@ -18,7 +18,7 @@ typedef Ref<NiVertexColorProperty> NiVertexColorPropertyRef;
  * not present, vertex colors have vertex_mode=2 and lighting_mode=1.
  */
 
-class DLLEXPORT NiVertexColorProperty : public NI_VERTEX_COLOR_PROPERTY_PARENT {
+class NIFLIB_API NiVertexColorProperty : public NI_VERTEX_COLOR_PROPERTY_PARENT {
 public:
 	NiVertexColorProperty();
 	~NiVertexColorProperty();
diff --git a/obj/NiVisController.h b/obj/NiVisController.h
index 885953dba6b2479b7637677b0318582558c8fb86..60fff803b29bc7868bcbd742a959f663d2e0f316 100644
--- a/obj/NiVisController.h
+++ b/obj/NiVisController.h
@@ -19,7 +19,7 @@ typedef Ref<NiVisController> NiVisControllerRef;
  * NiVisController - Time controller for visibility.
  */
 
-class DLLEXPORT NiVisController : public NI_VIS_CONTROLLER_PARENT {
+class NIFLIB_API NiVisController : public NI_VIS_CONTROLLER_PARENT {
 public:
 	NiVisController();
 	~NiVisController();
diff --git a/obj/NiVisData.h b/obj/NiVisData.h
index 30353066d08b39374b6c52b922021c8152436391..775fa4ef5d0000aeabc9cbccac6349deec9215ab 100644
--- a/obj/NiVisData.h
+++ b/obj/NiVisData.h
@@ -15,7 +15,7 @@ typedef Ref<NiVisData> NiVisDataRef;
  * NiVisData - Visibility data for a controller.
  */
 
-class DLLEXPORT NiVisData : public NI_VIS_DATA_PARENT {
+class NIFLIB_API NiVisData : public NI_VIS_DATA_PARENT {
 public:
 	NiVisData();
 	~NiVisData();
diff --git a/obj/NiWireframeProperty.h b/obj/NiWireframeProperty.h
index 1e205c4f13726a9c73ed4de6b03906ee6625c008..24cddd96ebef19c2104b819457d921201af04ae3 100644
--- a/obj/NiWireframeProperty.h
+++ b/obj/NiWireframeProperty.h
@@ -15,7 +15,7 @@ typedef Ref<NiWireframeProperty> NiWireframePropertyRef;
  * NiWireframeProperty - Unknown.
  */
 
-class DLLEXPORT NiWireframeProperty : public NI_WIREFRAME_PROPERTY_PARENT {
+class NIFLIB_API NiWireframeProperty : public NI_WIREFRAME_PROPERTY_PARENT {
 public:
 	NiWireframeProperty();
 	~NiWireframeProperty();
diff --git a/obj/NiZBufferProperty.h b/obj/NiZBufferProperty.h
index bec73dde74abbdcf722db5ff772984eafe135da1..801f6382c1a96a66a27ac6cdc1bb9d962a8928b6 100644
--- a/obj/NiZBufferProperty.h
+++ b/obj/NiZBufferProperty.h
@@ -16,7 +16,7 @@ typedef Ref<NiZBufferProperty> NiZBufferPropertyRef;
  * depth buffer).
  */
 
-class DLLEXPORT NiZBufferProperty : public NI_Z_BUFFER_PROPERTY_PARENT {
+class NIFLIB_API NiZBufferProperty : public NI_Z_BUFFER_PROPERTY_PARENT {
 public:
 	NiZBufferProperty();
 	~NiZBufferProperty();
diff --git a/obj/RootCollisionNode.h b/obj/RootCollisionNode.h
index 47e208df6a34e0cf60658b5bf9cd456ec106091a..f6bb0c8d07cfad82210239421e2379cc6bd46947 100644
--- a/obj/RootCollisionNode.h
+++ b/obj/RootCollisionNode.h
@@ -15,7 +15,7 @@ typedef Ref<RootCollisionNode> RootCollisionNodeRef;
  * RootCollisionNode - Morrowind-specific node for collision mesh.
  */
 
-class DLLEXPORT RootCollisionNode : public ROOT_COLLISION_NODE_PARENT {
+class NIFLIB_API RootCollisionNode : public ROOT_COLLISION_NODE_PARENT {
 public:
 	RootCollisionNode();
 	~RootCollisionNode();
diff --git a/obj/bhkBlendCollisionObject.h b/obj/bhkBlendCollisionObject.h
index ad2ec8063be9849e562a95d911da28fac769fb72..9297c278dad4dd23da3c49a3badf1baa70ac8b22 100644
--- a/obj/bhkBlendCollisionObject.h
+++ b/obj/bhkBlendCollisionObject.h
@@ -15,7 +15,7 @@ typedef Ref<bhkBlendCollisionObject> bhkBlendCollisionObjectRef;
  * bhkBlendCollisionObject - Unknown.
  */
 
-class DLLEXPORT bhkBlendCollisionObject : public BHK_BLEND_COLLISION_OBJECT_PARENT {
+class NIFLIB_API bhkBlendCollisionObject : public BHK_BLEND_COLLISION_OBJECT_PARENT {
 public:
 	bhkBlendCollisionObject();
 	~bhkBlendCollisionObject();
diff --git a/obj/bhkBlendController.h b/obj/bhkBlendController.h
index 2066213478a08e4eef7f7ccc19e6b9b991294bc5..0de4f18a7600531a213c83b32061c5026b1e0798 100644
--- a/obj/bhkBlendController.h
+++ b/obj/bhkBlendController.h
@@ -16,7 +16,7 @@ typedef Ref<bhkBlendController> bhkBlendControllerRef;
  * files.
  */
 
-class DLLEXPORT bhkBlendController : public BHK_BLEND_CONTROLLER_PARENT {
+class NIFLIB_API bhkBlendController : public BHK_BLEND_CONTROLLER_PARENT {
 public:
 	bhkBlendController();
 	~bhkBlendController();
diff --git a/obj/bhkBoxShape.h b/obj/bhkBoxShape.h
index 95d11651fdc8b3d5f519036498008aeaa0c52250..71cc6d9f4d83b4703d21901297a065403b9b476c 100644
--- a/obj/bhkBoxShape.h
+++ b/obj/bhkBoxShape.h
@@ -15,7 +15,7 @@ typedef Ref<bhkBoxShape> bhkBoxShapeRef;
  * bhkBoxShape - A box.
  */
 
-class DLLEXPORT bhkBoxShape : public BHK_BOX_SHAPE_PARENT {
+class NIFLIB_API bhkBoxShape : public BHK_BOX_SHAPE_PARENT {
 public:
 	bhkBoxShape();
 	~bhkBoxShape();
diff --git a/obj/bhkCapsuleShape.h b/obj/bhkCapsuleShape.h
index 84d7bdaca2140fc9d57e543c082c004d1f000403..0bb6689b50c82979f96b599a9b6075cc693dc2f6 100644
--- a/obj/bhkCapsuleShape.h
+++ b/obj/bhkCapsuleShape.h
@@ -15,7 +15,7 @@ typedef Ref<bhkCapsuleShape> bhkCapsuleShapeRef;
  * bhkCapsuleShape - A capsule.
  */
 
-class DLLEXPORT bhkCapsuleShape : public BHK_CAPSULE_SHAPE_PARENT {
+class NIFLIB_API bhkCapsuleShape : public BHK_CAPSULE_SHAPE_PARENT {
 public:
 	bhkCapsuleShape();
 	~bhkCapsuleShape();
diff --git a/obj/bhkCollisionObject.h b/obj/bhkCollisionObject.h
index d695f9b548786cc0a57870eed39a670345bce87f..37dbbd93663ccc1f922dd2f9597b5ff971bb3eeb 100644
--- a/obj/bhkCollisionObject.h
+++ b/obj/bhkCollisionObject.h
@@ -15,7 +15,7 @@ typedef Ref<bhkCollisionObject> bhkCollisionObjectRef;
  * bhkCollisionObject - Unknown.
  */
 
-class DLLEXPORT bhkCollisionObject : public BHK_COLLISION_OBJECT_PARENT {
+class NIFLIB_API bhkCollisionObject : public BHK_COLLISION_OBJECT_PARENT {
 public:
 	bhkCollisionObject();
 	~bhkCollisionObject();
diff --git a/obj/bhkConvexShape.h b/obj/bhkConvexShape.h
index 85c289da70d360dcc7edb29810d23218ebca3636..aeb5e42d8d11ffb4d35088ff6e72e57f477e5a0d 100644
--- a/obj/bhkConvexShape.h
+++ b/obj/bhkConvexShape.h
@@ -15,7 +15,7 @@ typedef Ref<bhkConvexShape> bhkConvexShapeRef;
  * bhkConvexShape - A havok shape.
  */
 
-class DLLEXPORT bhkConvexShape : public BHK_CONVEX_SHAPE_PARENT {
+class NIFLIB_API bhkConvexShape : public BHK_CONVEX_SHAPE_PARENT {
 public:
 	bhkConvexShape();
 	~bhkConvexShape();
diff --git a/obj/bhkConvexTransformShape.h b/obj/bhkConvexTransformShape.h
index d8a9b8d5c3088d34e6f6bd8213093d325ffad07c..2805616aacf12045c0d02dfbe7af5010eecec115 100644
--- a/obj/bhkConvexTransformShape.h
+++ b/obj/bhkConvexTransformShape.h
@@ -15,7 +15,7 @@ typedef Ref<bhkConvexTransformShape> bhkConvexTransformShapeRef;
  * bhkConvexTransformShape - A convex transformed shape?
  */
 
-class DLLEXPORT bhkConvexTransformShape : public BHK_CONVEX_TRANSFORM_SHAPE_PARENT {
+class NIFLIB_API bhkConvexTransformShape : public BHK_CONVEX_TRANSFORM_SHAPE_PARENT {
 public:
 	bhkConvexTransformShape();
 	~bhkConvexTransformShape();
diff --git a/obj/bhkConvexVerticesShape.h b/obj/bhkConvexVerticesShape.h
index 59af05dfae9b6d726a40eed2a465103d4a457201..8b87e9b60444dcd02d8fe693b3709ad6228f7b49 100644
--- a/obj/bhkConvexVerticesShape.h
+++ b/obj/bhkConvexVerticesShape.h
@@ -15,7 +15,7 @@ typedef Ref<bhkConvexVerticesShape> bhkConvexVerticesShapeRef;
  * bhkConvexVerticesShape - A convex shape built from vertices?
  */
 
-class DLLEXPORT bhkConvexVerticesShape : public BHK_CONVEX_VERTICES_SHAPE_PARENT {
+class NIFLIB_API bhkConvexVerticesShape : public BHK_CONVEX_VERTICES_SHAPE_PARENT {
 public:
 	bhkConvexVerticesShape();
 	~bhkConvexVerticesShape();
diff --git a/obj/bhkEntity.h b/obj/bhkEntity.h
index 0ea449dac374f5cab548c5b35eebb7bb013c3587..23e82db74d9137dc77be68f1ebf9eac6cd453a46 100644
--- a/obj/bhkEntity.h
+++ b/obj/bhkEntity.h
@@ -19,7 +19,7 @@ typedef Ref<bhkEntity> bhkEntityRef;
  * bhkEntity - A havok node, describes physical properties.
  */
 
-class DLLEXPORT bhkEntity : public BHK_ENTITY_PARENT {
+class NIFLIB_API bhkEntity : public BHK_ENTITY_PARENT {
 public:
 	bhkEntity();
 	~bhkEntity();
diff --git a/obj/bhkHingeConstraint.h b/obj/bhkHingeConstraint.h
index bd087f1203fc893f0d42d90ee596590288dda4c1..f365e22444d660c4ec16a539237023be25c49130 100644
--- a/obj/bhkHingeConstraint.h
+++ b/obj/bhkHingeConstraint.h
@@ -15,7 +15,7 @@ typedef Ref<bhkHingeConstraint> bhkHingeConstraintRef;
  * bhkHingeConstraint - A hinge constraint.
  */
 
-class DLLEXPORT bhkHingeConstraint : public BHK_HINGE_CONSTRAINT_PARENT {
+class NIFLIB_API bhkHingeConstraint : public BHK_HINGE_CONSTRAINT_PARENT {
 public:
 	bhkHingeConstraint();
 	~bhkHingeConstraint();
diff --git a/obj/bhkLimitedHingeConstraint.h b/obj/bhkLimitedHingeConstraint.h
index 9c5990d63a3f62f50e9b49cddcffed4876118b30..c8c5fc231af3539f07185657dcf822db0b5ecd9b 100644
--- a/obj/bhkLimitedHingeConstraint.h
+++ b/obj/bhkLimitedHingeConstraint.h
@@ -17,7 +17,7 @@ typedef Ref<bhkLimitedHingeConstraint> bhkLimitedHingeConstraintRef;
  * bhkLimitedHingeConstraint - Hinge constraint.
  */
 
-class DLLEXPORT bhkLimitedHingeConstraint : public BHK_LIMITED_HINGE_CONSTRAINT_PARENT {
+class NIFLIB_API bhkLimitedHingeConstraint : public BHK_LIMITED_HINGE_CONSTRAINT_PARENT {
 public:
 	bhkLimitedHingeConstraint();
 	~bhkLimitedHingeConstraint();
diff --git a/obj/bhkListShape.h b/obj/bhkListShape.h
index b414b6c1be3d44d1110466b0e6a36f72137e013f..d98738f84880992a53f07553dc772edacfd77372 100644
--- a/obj/bhkListShape.h
+++ b/obj/bhkListShape.h
@@ -19,7 +19,7 @@ typedef Ref<bhkListShape> bhkListShapeRef;
  * bhkListShape - A list of shapes.
  */
 
-class DLLEXPORT bhkListShape : public BHK_LIST_SHAPE_PARENT {
+class NIFLIB_API bhkListShape : public BHK_LIST_SHAPE_PARENT {
 public:
 	bhkListShape();
 	~bhkListShape();
diff --git a/obj/bhkMalleableConstraint.h b/obj/bhkMalleableConstraint.h
index 453d8cf933ab63ffd0b1b402aa26348b8f6b6186..e6e96ff53f818cbcb8ba80008d63be9b1e37722a 100644
--- a/obj/bhkMalleableConstraint.h
+++ b/obj/bhkMalleableConstraint.h
@@ -22,7 +22,7 @@ typedef Ref<bhkMalleableConstraint> bhkMalleableConstraintRef;
  * bhkMalleableConstraint - A malleable constraint.
  */
 
-class DLLEXPORT bhkMalleableConstraint : public BHK_MALLEABLE_CONSTRAINT_PARENT {
+class NIFLIB_API bhkMalleableConstraint : public BHK_MALLEABLE_CONSTRAINT_PARENT {
 public:
 	bhkMalleableConstraint();
 	~bhkMalleableConstraint();
diff --git a/obj/bhkMoppBvTreeShape.h b/obj/bhkMoppBvTreeShape.h
index a75376e6b375e608cea819903fb6e74db10e8232..61dd57449307338ffcbc156e06046142ef5b8aff 100644
--- a/obj/bhkMoppBvTreeShape.h
+++ b/obj/bhkMoppBvTreeShape.h
@@ -20,7 +20,7 @@ typedef Ref<bhkMoppBvTreeShape> bhkMoppBvTreeShapeRef;
  * tree shape (not an entity).
  */
 
-class DLLEXPORT bhkMoppBvTreeShape : public BHK_MOPP_BV_TREE_SHAPE_PARENT {
+class NIFLIB_API bhkMoppBvTreeShape : public BHK_MOPP_BV_TREE_SHAPE_PARENT {
 public:
 	bhkMoppBvTreeShape();
 	~bhkMoppBvTreeShape();
diff --git a/obj/bhkMultiSphereShape.h b/obj/bhkMultiSphereShape.h
index 9f83f0d869cdb957a2436859fd67515b51617c5e..220da82ec51cdfa3f6f0d679f2900279271feae4 100644
--- a/obj/bhkMultiSphereShape.h
+++ b/obj/bhkMultiSphereShape.h
@@ -15,7 +15,7 @@ typedef Ref<bhkMultiSphereShape> bhkMultiSphereShapeRef;
  * bhkMultiSphereShape - Unknown.
  */
 
-class DLLEXPORT bhkMultiSphereShape : public BHK_MULTI_SPHERE_SHAPE_PARENT {
+class NIFLIB_API bhkMultiSphereShape : public BHK_MULTI_SPHERE_SHAPE_PARENT {
 public:
 	bhkMultiSphereShape();
 	~bhkMultiSphereShape();
diff --git a/obj/bhkNiTriStripsShape.h b/obj/bhkNiTriStripsShape.h
index 91e377958a73bc166f2423c0605dc73affed915b..ce05e571224ca5d4f3783e87d8c75ecd5ec01000 100644
--- a/obj/bhkNiTriStripsShape.h
+++ b/obj/bhkNiTriStripsShape.h
@@ -19,7 +19,7 @@ typedef Ref<bhkNiTriStripsShape> bhkNiTriStripsShapeRef;
  * bhkNiTriStripsShape - A shape constructed from a bunch of strips.
  */
 
-class DLLEXPORT bhkNiTriStripsShape : public BHK_NI_TRI_STRIPS_SHAPE_PARENT {
+class NIFLIB_API bhkNiTriStripsShape : public BHK_NI_TRI_STRIPS_SHAPE_PARENT {
 public:
 	bhkNiTriStripsShape();
 	~bhkNiTriStripsShape();
diff --git a/obj/bhkPackedNiTriStripsShape.h b/obj/bhkPackedNiTriStripsShape.h
index 30fcbb72f6189c05ccf994fa3ff8f0be254bc21e..1bf0656ab3006a7aef3aaf565b868a76b456d4bb 100644
--- a/obj/bhkPackedNiTriStripsShape.h
+++ b/obj/bhkPackedNiTriStripsShape.h
@@ -19,7 +19,7 @@ typedef Ref<bhkPackedNiTriStripsShape> bhkPackedNiTriStripsShapeRef;
  * bhkPackedNiTriStripsShape - A shape constructed from strips data.
  */
 
-class DLLEXPORT bhkPackedNiTriStripsShape : public BHK_PACKED_NI_TRI_STRIPS_SHAPE_PARENT {
+class NIFLIB_API bhkPackedNiTriStripsShape : public BHK_PACKED_NI_TRI_STRIPS_SHAPE_PARENT {
 public:
 	bhkPackedNiTriStripsShape();
 	~bhkPackedNiTriStripsShape();
diff --git a/obj/bhkPrismaticConstraint.h b/obj/bhkPrismaticConstraint.h
index e37c91872bcb9d0eeba97d2757c7304e81f874b8..0d6af91fee507604c1715138ea537d31bfd7f766 100644
--- a/obj/bhkPrismaticConstraint.h
+++ b/obj/bhkPrismaticConstraint.h
@@ -15,7 +15,7 @@ typedef Ref<bhkPrismaticConstraint> bhkPrismaticConstraintRef;
  * bhkPrismaticConstraint - A prismatic constraint.
  */
 
-class DLLEXPORT bhkPrismaticConstraint : public BHK_PRISMATIC_CONSTRAINT_PARENT {
+class NIFLIB_API bhkPrismaticConstraint : public BHK_PRISMATIC_CONSTRAINT_PARENT {
 public:
 	bhkPrismaticConstraint();
 	~bhkPrismaticConstraint();
diff --git a/obj/bhkRagdollConstraint.h b/obj/bhkRagdollConstraint.h
index 31580a44b98409302ddb6b86d0ef95f523095655..9c771e7f001cd003bfcf09f5cdf14f01ede62d1e 100644
--- a/obj/bhkRagdollConstraint.h
+++ b/obj/bhkRagdollConstraint.h
@@ -15,7 +15,7 @@ typedef Ref<bhkRagdollConstraint> bhkRagdollConstraintRef;
  * bhkRagdollConstraint - Ragdoll constraint.
  */
 
-class DLLEXPORT bhkRagdollConstraint : public BHK_RAGDOLL_CONSTRAINT_PARENT {
+class NIFLIB_API bhkRagdollConstraint : public BHK_RAGDOLL_CONSTRAINT_PARENT {
 public:
 	bhkRagdollConstraint();
 	~bhkRagdollConstraint();
diff --git a/obj/bhkRefObject.h b/obj/bhkRefObject.h
index 358e8e2fab6bfd522af8f6ff8971e128d0dd87d3..693590aed7b3f836b468288897c14669fe026a21 100644
--- a/obj/bhkRefObject.h
+++ b/obj/bhkRefObject.h
@@ -15,7 +15,7 @@ typedef Ref<bhkRefObject> bhkRefObjectRef;
  * bhkRefObject - The base type of all Havok objects?
  */
 
-class DLLEXPORT bhkRefObject : public BHK_REF_OBJECT_PARENT {
+class NIFLIB_API bhkRefObject : public BHK_REF_OBJECT_PARENT {
 public:
 	bhkRefObject();
 	~bhkRefObject();
diff --git a/obj/bhkRigidBody.h b/obj/bhkRigidBody.h
index 138d5f82d2ba66a690b7272860ce75079d5e3b61..4f44e6934255c4261d234e20b1d3638e1fe38a3f 100644
--- a/obj/bhkRigidBody.h
+++ b/obj/bhkRigidBody.h
@@ -21,7 +21,7 @@ typedef Ref<bhkRigidBody> bhkRigidBodyRef;
  * bhkRigidBody - Describes physical properties of an object.
  */
 
-class DLLEXPORT bhkRigidBody : public BHK_RIGID_BODY_PARENT {
+class NIFLIB_API bhkRigidBody : public BHK_RIGID_BODY_PARENT {
 public:
 	bhkRigidBody();
 	~bhkRigidBody();
diff --git a/obj/bhkRigidBodyT.h b/obj/bhkRigidBodyT.h
index 7f387aad142fe83bcacf9f91980fc73bd4fcc4c9..c6a0dc2fe5fa270c7b1c645ab997826ec8fd7f77 100644
--- a/obj/bhkRigidBodyT.h
+++ b/obj/bhkRigidBodyT.h
@@ -15,7 +15,7 @@ typedef Ref<bhkRigidBodyT> bhkRigidBodyTRef;
  * bhkRigidBodyT - Unknown.
  */
 
-class DLLEXPORT bhkRigidBodyT : public BHK_RIGID_BODY_T_PARENT {
+class NIFLIB_API bhkRigidBodyT : public BHK_RIGID_BODY_T_PARENT {
 public:
 	bhkRigidBodyT();
 	~bhkRigidBodyT();
diff --git a/obj/bhkSPCollisionObject.h b/obj/bhkSPCollisionObject.h
index 635179154bbd20015b70b00b6ec5fb901eb6b7b7..c2526b017982f0355d5f179b72d72102b0b96f38 100644
--- a/obj/bhkSPCollisionObject.h
+++ b/obj/bhkSPCollisionObject.h
@@ -15,7 +15,7 @@ typedef Ref<bhkSPCollisionObject> bhkSPCollisionObjectRef;
  * bhkSPCollisionObject - Unknown.
  */
 
-class DLLEXPORT bhkSPCollisionObject : public BHK_S_P_COLLISION_OBJECT_PARENT {
+class NIFLIB_API bhkSPCollisionObject : public BHK_S_P_COLLISION_OBJECT_PARENT {
 public:
 	bhkSPCollisionObject();
 	~bhkSPCollisionObject();
diff --git a/obj/bhkSerializable.h b/obj/bhkSerializable.h
index 159ed04fe8a44e0e281112510929edb8574fd6e7..8de408503ae57004c2ea58f05e6f55d419b9c549 100644
--- a/obj/bhkSerializable.h
+++ b/obj/bhkSerializable.h
@@ -16,7 +16,7 @@ typedef Ref<bhkSerializable> bhkSerializableRef;
  * disk?
  */
 
-class DLLEXPORT bhkSerializable : public BHK_SERIALIZABLE_PARENT {
+class NIFLIB_API bhkSerializable : public BHK_SERIALIZABLE_PARENT {
 public:
 	bhkSerializable();
 	~bhkSerializable();
diff --git a/obj/bhkShape.h b/obj/bhkShape.h
index d66cd7a5c1e9b78d352651179fd16d2b4ef99824..a1502a44f0fc1625ecd2b042c0847af332deff84 100644
--- a/obj/bhkShape.h
+++ b/obj/bhkShape.h
@@ -15,7 +15,7 @@ typedef Ref<bhkShape> bhkShapeRef;
  * bhkShape - A Havok Shape?
  */
 
-class DLLEXPORT bhkShape : public BHK_SHAPE_PARENT {
+class NIFLIB_API bhkShape : public BHK_SHAPE_PARENT {
 public:
 	bhkShape();
 	~bhkShape();
diff --git a/obj/bhkSimpleShapePhantom.h b/obj/bhkSimpleShapePhantom.h
index 79c626879972c77702b94ee634e3fffd3d57d1c9..db980c1a0c3e817068516cf2d05b5d2a82270616 100644
--- a/obj/bhkSimpleShapePhantom.h
+++ b/obj/bhkSimpleShapePhantom.h
@@ -15,7 +15,7 @@ typedef Ref<bhkSimpleShapePhantom> bhkSimpleShapePhantomRef;
  * bhkSimpleShapePhantom - Unknown shape.
  */
 
-class DLLEXPORT bhkSimpleShapePhantom : public BHK_SIMPLE_SHAPE_PHANTOM_PARENT {
+class NIFLIB_API bhkSimpleShapePhantom : public BHK_SIMPLE_SHAPE_PHANTOM_PARENT {
 public:
 	bhkSimpleShapePhantom();
 	~bhkSimpleShapePhantom();
diff --git a/obj/bhkSphereRepShape.h b/obj/bhkSphereRepShape.h
index db4a9d1125f88282d1fc253d9726ca6c0f36fafd..bf975964efab0d3d4e6b280311a5c9e16368d495 100644
--- a/obj/bhkSphereRepShape.h
+++ b/obj/bhkSphereRepShape.h
@@ -16,7 +16,7 @@ typedef Ref<bhkSphereRepShape> bhkSphereRepShapeRef;
  * quick rejection in addition to more detailed shape data?
  */
 
-class DLLEXPORT bhkSphereRepShape : public BHK_SPHERE_REP_SHAPE_PARENT {
+class NIFLIB_API bhkSphereRepShape : public BHK_SPHERE_REP_SHAPE_PARENT {
 public:
 	bhkSphereRepShape();
 	~bhkSphereRepShape();
diff --git a/obj/bhkSphereShape.h b/obj/bhkSphereShape.h
index 734fc8a2d217c22ef57664d9de2e846a3b73258b..90de85fd932193d7c0c2b9fabdd69441b5b3ecf9 100644
--- a/obj/bhkSphereShape.h
+++ b/obj/bhkSphereShape.h
@@ -15,7 +15,7 @@ typedef Ref<bhkSphereShape> bhkSphereShapeRef;
  * bhkSphereShape - A sphere.
  */
 
-class DLLEXPORT bhkSphereShape : public BHK_SPHERE_SHAPE_PARENT {
+class NIFLIB_API bhkSphereShape : public BHK_SPHERE_SHAPE_PARENT {
 public:
 	bhkSphereShape();
 	~bhkSphereShape();
diff --git a/obj/bhkStiffSpringConstraint.h b/obj/bhkStiffSpringConstraint.h
index 263119a5ce3b064b4793160add498495f0a05e3a..1b1264318c54c89e48f26a365ffd8e0d17dcde5c 100644
--- a/obj/bhkStiffSpringConstraint.h
+++ b/obj/bhkStiffSpringConstraint.h
@@ -15,7 +15,7 @@ typedef Ref<bhkStiffSpringConstraint> bhkStiffSpringConstraintRef;
  * bhkStiffSpringConstraint - A spring constraint.
  */
 
-class DLLEXPORT bhkStiffSpringConstraint : public BHK_STIFF_SPRING_CONSTRAINT_PARENT {
+class NIFLIB_API bhkStiffSpringConstraint : public BHK_STIFF_SPRING_CONSTRAINT_PARENT {
 public:
 	bhkStiffSpringConstraint();
 	~bhkStiffSpringConstraint();
diff --git a/obj/bhkTransformShape.h b/obj/bhkTransformShape.h
index 770b198c7127aaaf7e3fa3d16c914bed6501cae6..aa53ab784234bc1c88fe006ff415fadccc89f9f3 100644
--- a/obj/bhkTransformShape.h
+++ b/obj/bhkTransformShape.h
@@ -15,7 +15,7 @@ typedef Ref<bhkTransformShape> bhkTransformShapeRef;
  * bhkTransformShape - Transforms a shape.
  */
 
-class DLLEXPORT bhkTransformShape : public BHK_TRANSFORM_SHAPE_PARENT {
+class NIFLIB_API bhkTransformShape : public BHK_TRANSFORM_SHAPE_PARENT {
 public:
 	bhkTransformShape();
 	~bhkTransformShape();
diff --git a/obj/bhkWorldObject.h b/obj/bhkWorldObject.h
index a160b2e93536da31e1d38f55aceb3f54fbce1c73..5845cf3a433199efb644dd6dad8a1c3fc458e890 100644
--- a/obj/bhkWorldObject.h
+++ b/obj/bhkWorldObject.h
@@ -15,7 +15,7 @@ typedef Ref<bhkWorldObject> bhkWorldObjectRef;
  * bhkWorldObject - Havok objects that have a position in the world?
  */
 
-class DLLEXPORT bhkWorldObject : public BHK_WORLD_OBJECT_PARENT {
+class NIFLIB_API bhkWorldObject : public BHK_WORLD_OBJECT_PARENT {
 public:
 	bhkWorldObject();
 	~bhkWorldObject();
diff --git a/obj/hkPackedNiTriStripsData.h b/obj/hkPackedNiTriStripsData.h
index efa3f05bed154615bc118e31843b824551b5e62d..359b606231f6295e62afb367bbd8793b052cf139 100644
--- a/obj/hkPackedNiTriStripsData.h
+++ b/obj/hkPackedNiTriStripsData.h
@@ -17,7 +17,7 @@ typedef Ref<hkPackedNiTriStripsData> hkPackedNiTriStripsDataRef;
  * hkPackedNiTriStripsData - NiTriStripsData for havok data?
  */
 
-class DLLEXPORT hkPackedNiTriStripsData : public HK_PACKED_NI_TRI_STRIPS_DATA_PARENT {
+class NIFLIB_API hkPackedNiTriStripsData : public HK_PACKED_NI_TRI_STRIPS_DATA_PARENT {
 public:
 	hkPackedNiTriStripsData();
 	~hkPackedNiTriStripsData();
diff --git a/py_niflib.vcproj b/py_niflib.vcproj
index fe08a8b507a6f18bf29cbb791a8be8627758f20d..3efcb9db00a095f5f21cad515a1d317ea672707d 100644
--- a/py_niflib.vcproj
+++ b/py_niflib.vcproj
@@ -248,10 +248,88 @@
 				Name="VCPostBuildEventTool"
 			/>
 		</Configuration>
+		<Configuration
+			Name="Release - DLL|Win32"
+			OutputDirectory="$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="2"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				RuntimeLibrary="0"
+				UsePrecompiledHeader="0"
+				WarningLevel="0"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalOptions="niflib.lib"
+				OutputFile="../bin/_niflib.dll"
+				LinkIncremental="1"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
 	</Configurations>
 	<References>
 		<ProjectReference
 			ReferencedProjectIdentifier="{19FD8EE6-79CC-4BAC-9744-D9573BE47C7E}"
+			RelativePathToProject=".\niflib.vcproj"
 		/>
 	</References>
 	<Files>
@@ -301,6 +379,17 @@
 						Outputs="py_wrap.cpp"
 					/>
 				</FileConfiguration>
+				<FileConfiguration
+					Name="Release - DLL|Win32"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+						Description="Running SWIG..."
+						CommandLine="swig -c++ -python -outdir &quot;..\bin&quot; -o py_wrap.cpp pyniflib.i&#x0D;&#x0A;"
+						AdditionalDependencies="niflib.h"
+						Outputs="py_wrap.cpp"
+					/>
+				</FileConfiguration>
 			</File>
 		</Filter>
 	</Files>