From 6a449c859c1f2a99f4a485c5d4bdb7e8187e884f Mon Sep 17 00:00:00 2001
From: Shon Ferguson <shonferg@users.sourceforge.net>
Date: Wed, 7 Jun 2006 04:57:55 +0000
Subject: [PATCH] Trying to make Niflib a DLL.  Added DLLEXPORT to everything.

---
 Type.h                                   |  2 +-
 gen/AVObject.h                           |  2 +-
 gen/Bones.h                              |  2 +-
 gen/BoundingBox.h                        |  2 +-
 gen/ByteArray.h                          |  2 +-
 gen/ControllerLink.h                     |  2 +-
 gen/Footer.h                             |  2 +-
 gen/FurniturePosition.h                  |  2 +-
 gen/Header.h                             |  2 +-
 gen/KeyGroup.h                           |  2 +-
 gen/LODRange.h                           |  2 +-
 gen/LimitedHingeDescriptor.h             |  2 +-
 gen/MatchGroup.h                         |  2 +-
 gen/MipMap.h                             |  2 +-
 gen/Morph.h                              |  2 +-
 gen/NodeGroup.h                          |  2 +-
 gen/Particle.h                           |  2 +-
 gen/QuaternionXYZW.h                     |  2 +-
 gen/RagDollDescriptor.h                  |  2 +-
 gen/RotationKeyArray.h                   |  2 +-
 gen/ShaderTexDesc.h                      |  2 +-
 gen/ShortString.h                        |  2 +-
 gen/SkinData.h                           |  2 +-
 gen/SkinPartition.h                      |  2 +-
 gen/SkinShape.h                          |  2 +-
 gen/SkinShapeGroup.h                     |  2 +-
 gen/SkinWeight.h                         |  2 +-
 gen/StringPalette.h                      |  2 +-
 gen/TBC.h                                |  2 +-
 gen/TexDesc.h                            |  2 +-
 gen/TexSource.h                          |  2 +-
 gen/hkTriangle.h                         |  2 +-
 nif_math.h                               | 95 ++++++++++++------------
 niflib.h                                 | 34 ++++-----
 niflib.vcproj                            | 21 +++++-
 obj/ABoneLODController.h                 |  2 +-
 obj/AKeyedData.h                         |  2 +-
 obj/APSysCtlr.h                          |  2 +-
 obj/APSysData.h                          |  2 +-
 obj/AParticleModifier.h                  |  2 +-
 obj/AbhkConstraint.h                     |  2 +-
 obj/AbhkRagdollConstraint.h              |  2 +-
 obj/AbhkShapeCollection.h                |  2 +-
 obj/AvoidNode.h                          |  2 +-
 obj/BSBound.h                            |  2 +-
 obj/BSFurnitureMarker.h                  |  2 +-
 obj/BSKeyframeController.h               |  2 +-
 obj/BSPSysArrayEmitter.h                 |  2 +-
 obj/BSParentVelocityModifier.h           |  2 +-
 obj/BSXFlags.h                           |  2 +-
 obj/FxButton.h                           |  2 +-
 obj/FxRadioButton.h                      |  2 +-
 obj/FxWidget.h                           |  2 +-
 obj/NiAVObject.h                         |  2 +-
 obj/NiAlphaController.h                  |  2 +-
 obj/NiAlphaProperty.h                    |  2 +-
 obj/NiAmbientLight.h                     |  2 +-
 obj/NiAutoNormalParticles.h              |  2 +-
 obj/NiAutoNormalParticlesData.h          |  2 +-
 obj/NiBSAnimationNode.h                  |  2 +-
 obj/NiBSBoneLODController.h              |  2 +-
 obj/NiBSPArrayController.h               |  2 +-
 obj/NiBSParticleNode.h                   |  2 +-
 obj/NiBSplineBasisData.h                 |  2 +-
 obj/NiBSplineCompFloatInterpolator.h     |  2 +-
 obj/NiBSplineCompPoint3Interpolator.h    |  2 +-
 obj/NiBSplineCompTransformInterpolator.h |  2 +-
 obj/NiBSplineInterpolator.h              |  2 +-
 obj/NiBillboardNode.h                    |  2 +-
 obj/NiBinaryExtraData.h                  |  2 +-
 obj/NiBlendBoolInterpolator.h            |  2 +-
 obj/NiBlendFloatInterpolator.h           |  2 +-
 obj/NiBlendInterpolator.h                |  2 +-
 obj/NiBlendPoint3Interpolator.h          |  2 +-
 obj/NiBlendTransformInterpolator.h       |  2 +-
 obj/NiBoneLODController.h                |  2 +-
 obj/NiBoolData.h                         |  2 +-
 obj/NiBoolInterpolator.h                 |  2 +-
 obj/NiBoolTimelineInterpolator.h         |  2 +-
 obj/NiBooleanExtraData.h                 |  2 +-
 obj/NiCamera.h                           |  2 +-
 obj/NiCollisionData.h                    |  2 +-
 obj/NiCollisionObject.h                  |  2 +-
 obj/NiColorData.h                        |  2 +-
 obj/NiColorExtraData.h                   |  2 +-
 obj/NiControllerManager.h                |  2 +-
 obj/NiControllerSequence.h               |  2 +-
 obj/NiDefaultAVObjectPalette.h           |  2 +-
 obj/NiDirectionalLight.h                 |  2 +-
 obj/NiDitherProperty.h                   |  2 +-
 obj/NiDynamicEffect.h                    |  2 +-
 obj/NiExtraData.h                        |  2 +-
 obj/NiFlipController.h                   |  2 +-
 obj/NiFloatData.h                        |  2 +-
 obj/NiFloatExtraData.h                   |  2 +-
 obj/NiFloatExtraDataController.h         |  2 +-
 obj/NiFloatInterpolator.h                |  2 +-
 obj/NiFloatsExtraData.h                  |  2 +-
 obj/NiFogProperty.h                      |  2 +-
 obj/NiGeomMorpherController.h            |  2 +-
 obj/NiGravity.h                          |  2 +-
 obj/NiIntegerExtraData.h                 |  2 +-
 obj/NiIntegersExtraData.h                |  2 +-
 obj/NiInterpolator.h                     |  2 +-
 obj/NiKeyframeController.h               |  2 +-
 obj/NiKeyframeData.h                     |  2 +-
 obj/NiLODNode.h                          |  2 +-
 obj/NiLight.h                            |  2 +-
 obj/NiLightColorController.h             |  2 +-
 obj/NiLightDimmerController.h            |  2 +-
 obj/NiLookAtController.h                 |  2 +-
 obj/NiLookAtInterpolator.h               |  2 +-
 obj/NiMaterialColorController.h          |  2 +-
 obj/NiMaterialProperty.h                 |  2 +-
 obj/NiMeshPSysData.h                     |  2 +-
 obj/NiMeshParticleSystem.h               |  2 +-
 obj/NiMorphData.h                        |  2 +-
 obj/NiMultiTargetTransformController.h   |  2 +-
 obj/NiNode.h                             |  2 +-
 obj/NiObject.h                           |  2 +-
 obj/NiObjectNET.h                        |  2 +-
 obj/NiPSysAgeDeathModifier.h             |  2 +-
 obj/NiPSysBombModifier.h                 |  2 +-
 obj/NiPSysBoundUpdateModifier.h          |  2 +-
 obj/NiPSysBoxEmitter.h                   |  2 +-
 obj/NiPSysColliderManager.h              |  2 +-
 obj/NiPSysColorModifier.h                |  2 +-
 obj/NiPSysCylinderEmitter.h              |  2 +-
 obj/NiPSysData.h                         |  2 +-
 obj/NiPSysDragModifier.h                 |  2 +-
 obj/NiPSysEmitter.h                      |  2 +-
 obj/NiPSysEmitterCtlr.h                  |  2 +-
 obj/NiPSysEmitterCtlrData.h              |  2 +-
 obj/NiPSysEmitterDeclinationCtlr.h       |  2 +-
 obj/NiPSysEmitterDeclinationVarCtlr.h    |  2 +-
 obj/NiPSysEmitterInitialRadiusCtlr.h     |  2 +-
 obj/NiPSysEmitterLifeSpanCtlr.h          |  2 +-
 obj/NiPSysEmitterSpeedCtlr.h             |  2 +-
 obj/NiPSysGravityModifier.h              |  2 +-
 obj/NiPSysGravityStrengthCtlr.h          |  2 +-
 obj/NiPSysGrowFadeModifier.h             |  2 +-
 obj/NiPSysMeshEmitter.h                  |  2 +-
 obj/NiPSysMeshUpdateModifier.h           |  2 +-
 obj/NiPSysModifier.h                     |  2 +-
 obj/NiPSysModifierActiveCtlr.h           |  2 +-
 obj/NiPSysPlanarCollider.h               |  2 +-
 obj/NiPSysPositionModifier.h             |  2 +-
 obj/NiPSysResetOnLoopCtlr.h              |  2 +-
 obj/NiPSysRotationModifier.h             |  2 +-
 obj/NiPSysSpawnModifier.h                |  2 +-
 obj/NiPSysSphereEmitter.h                |  2 +-
 obj/NiPSysUpdateCtlr.h                   |  2 +-
 obj/NiPSysVolumeEmitter.h                |  2 +-
 obj/NiPalette.h                          |  2 +-
 obj/NiParticleBomb.h                     |  2 +-
 obj/NiParticleColorModifier.h            |  2 +-
 obj/NiParticleGrowFade.h                 |  2 +-
 obj/NiParticleMeshModifier.h             |  2 +-
 obj/NiParticleMeshes.h                   |  2 +-
 obj/NiParticleMeshesData.h               |  2 +-
 obj/NiParticleRotation.h                 |  2 +-
 obj/NiParticleSystem.h                   |  2 +-
 obj/NiParticleSystemController.h         |  2 +-
 obj/NiParticles.h                        |  2 +-
 obj/NiParticlesData.h                    |  2 +-
 obj/NiPathController.h                   |  2 +-
 obj/NiPathInterpolator.h                 |  2 +-
 obj/NiPixelData.h                        |  2 +-
 obj/NiPlanarCollider.h                   |  2 +-
 obj/NiPoint3Interpolator.h               |  2 +-
 obj/NiPointLight.h                       |  2 +-
 obj/NiPosData.h                          |  2 +-
 obj/NiProperty.h                         |  2 +-
 obj/NiRangeLODData.h                     |  2 +-
 obj/NiRotatingParticles.h                |  2 +-
 obj/NiRotatingParticlesData.h            |  2 +-
 obj/NiScreenLODData.h                    |  2 +-
 obj/NiSequenceStreamHelper.h             |  2 +-
 obj/NiShadeProperty.h                    |  2 +-
 obj/NiSingleInterpolatorController.h     |  2 +-
 obj/NiSkinData.h                         |  2 +-
 obj/NiSkinInstance.h                     |  2 +-
 obj/NiSkinPartition.h                    |  2 +-
 obj/NiSourceTexture.h                    |  2 +-
 obj/NiSpecularProperty.h                 |  2 +-
 obj/NiSphericalCollider.h                |  2 +-
 obj/NiSpotLight.h                        |  2 +-
 obj/NiStencilProperty.h                  |  2 +-
 obj/NiStringExtraData.h                  |  2 +-
 obj/NiStringPalette.h                    |  2 +-
 obj/NiStringsExtraData.h                 |  2 +-
 obj/NiTextKeyExtraData.h                 |  2 +-
 obj/NiTextureEffect.h                    |  2 +-
 obj/NiTextureTransformController.h       |  2 +-
 obj/NiTexturingProperty.h                |  2 +-
 obj/NiTimeController.h                   |  2 +-
 obj/NiTransformController.h              |  2 +-
 obj/NiTransformData.h                    |  2 +-
 obj/NiTransformInterpolator.h            |  2 +-
 obj/NiTriBasedGeom.h                     |  2 +-
 obj/NiTriBasedGeomData.h                 |  2 +-
 obj/NiTriShape.h                         |  2 +-
 obj/NiTriShapeData.h                     |  2 +-
 obj/NiTriStrips.h                        |  2 +-
 obj/NiTriStripsData.h                    |  2 +-
 obj/NiUVController.h                     |  2 +-
 obj/NiUVData.h                           |  2 +-
 obj/NiVectorExtraData.h                  |  2 +-
 obj/NiVertWeightsExtraData.h             |  2 +-
 obj/NiVertexColorProperty.h              |  2 +-
 obj/NiVisController.h                    |  2 +-
 obj/NiVisData.h                          |  2 +-
 obj/NiWireframeProperty.h                |  2 +-
 obj/NiZBufferProperty.h                  |  2 +-
 obj/RootCollisionNode.h                  |  2 +-
 obj/bhkBlendCollisionObject.h            |  2 +-
 obj/bhkBlendController.h                 |  2 +-
 obj/bhkBoxShape.h                        |  2 +-
 obj/bhkCapsuleShape.h                    |  2 +-
 obj/bhkCollisionObject.h                 |  2 +-
 obj/bhkConvexShape.h                     |  2 +-
 obj/bhkConvexTransformShape.h            |  2 +-
 obj/bhkConvexVerticesShape.h             |  2 +-
 obj/bhkEntity.h                          |  2 +-
 obj/bhkHingeConstraint.h                 |  2 +-
 obj/bhkLimitedHingeConstraint.h          |  2 +-
 obj/bhkListShape.h                       |  2 +-
 obj/bhkMalleableConstraint.h             |  2 +-
 obj/bhkMoppBvTreeShape.h                 |  2 +-
 obj/bhkMultiSphereShape.h                |  2 +-
 obj/bhkNiTriStripsShape.h                |  2 +-
 obj/bhkPackedNiTriStripsShape.h          |  2 +-
 obj/bhkPrismaticConstraint.h             |  2 +-
 obj/bhkRagdollConstraint.h               |  2 +-
 obj/bhkRefObject.h                       |  2 +-
 obj/bhkRigidBody.h                       |  2 +-
 obj/bhkRigidBodyT.h                      |  2 +-
 obj/bhkSPCollisionObject.h               |  2 +-
 obj/bhkSerializable.h                    |  2 +-
 obj/bhkShape.h                           |  2 +-
 obj/bhkSimpleShapePhantom.h              |  2 +-
 obj/bhkSphereRepShape.h                  |  2 +-
 obj/bhkSphereShape.h                     |  2 +-
 obj/bhkStiffSpringConstraint.h           |  2 +-
 obj/bhkTransformShape.h                  |  2 +-
 obj/bhkWorldObject.h                     |  2 +-
 obj/hkPackedNiTriStripsData.h            |  2 +-
 pch.h                                    |  1 +
 248 files changed, 327 insertions(+), 312 deletions(-)

diff --git a/Type.h b/Type.h
index 9dfb499d..44282e3e 100644
--- a/Type.h
+++ b/Type.h
@@ -11,7 +11,7 @@ using namespace std;
 /**
  * Run Time Type Inforamtion Class
  */
-class Type {
+class DLLEXPORT Type {
 public:
 	Type (const string & type_name, const Type * par_type );
 	~Type();
diff --git a/gen/AVObject.h b/gen/AVObject.h
index 8aa16995..95f5b5ed 100644
--- a/gen/AVObject.h
+++ b/gen/AVObject.h
@@ -13,7 +13,7 @@ class NiAVObject;
 /*!
  * Used in NiDefaultAVObjectPalette.
  */
-struct AVObject {
+struct DLLEXPORT AVObject {
 	/*! Default Constructor */
 	AVObject();
 	/*! Default Destructor */
diff --git a/gen/Bones.h b/gen/Bones.h
index edf6f230..fb327999 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 Bones {
+struct DLLEXPORT Bones {
 	/*! Default Constructor */
 	Bones();
 	/*! Default Destructor */
diff --git a/gen/BoundingBox.h b/gen/BoundingBox.h
index 318463ae..db067df4 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 BoundingBox {
+struct DLLEXPORT BoundingBox {
 	/*! Default Constructor */
 	BoundingBox();
 	/*! Default Destructor */
diff --git a/gen/ByteArray.h b/gen/ByteArray.h
index 016ea1d8..7377623e 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 ByteArray {
+struct DLLEXPORT ByteArray {
 	/*! Default Constructor */
 	ByteArray();
 	/*! Default Destructor */
diff --git a/gen/ControllerLink.h b/gen/ControllerLink.h
index c4f2020b..31935e93 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 ControllerLink {
+struct DLLEXPORT ControllerLink {
 	/*! Default Constructor */
 	ControllerLink();
 	/*! Default Destructor */
diff --git a/gen/Footer.h b/gen/Footer.h
index e0593ebd..6d58dce2 100644
--- a/gen/Footer.h
+++ b/gen/Footer.h
@@ -14,7 +14,7 @@ class NiAVObject;
 /*!
  * The NIF file footer.
  */
-struct Footer {
+struct DLLEXPORT Footer {
 	/*! Default Constructor */
 	Footer();
 	/*! Default Destructor */
diff --git a/gen/FurniturePosition.h b/gen/FurniturePosition.h
index 5941fdaf..e8e5ed12 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 FurniturePosition {
+struct DLLEXPORT FurniturePosition {
 	/*! Default Constructor */
 	FurniturePosition();
 	/*! Default Destructor */
diff --git a/gen/Header.h b/gen/Header.h
index 486542a0..0d07cbcf 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 Header {
+struct DLLEXPORT Header {
 	/*! Default Constructor */
 	Header();
 	/*! Default Destructor */
diff --git a/gen/KeyGroup.h b/gen/KeyGroup.h
index db6b7e43..b058f0c1 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 KeyGroup {
+struct DLLEXPORT KeyGroup {
 	/*!
 	 * Number of keys in the array.
 	 */
diff --git a/gen/LODRange.h b/gen/LODRange.h
index 35bad280..33186122 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 LODRange {
+struct DLLEXPORT LODRange {
 	/*! Default Constructor */
 	LODRange();
 	/*! Default Destructor */
diff --git a/gen/LimitedHingeDescriptor.h b/gen/LimitedHingeDescriptor.h
index be3de4af..5816d655 100644
--- a/gen/LimitedHingeDescriptor.h
+++ b/gen/LimitedHingeDescriptor.h
@@ -10,7 +10,7 @@ All rights reserved.  Please see niflib.h for licence. */
 /*!
  * 
  */
-struct LimitedHingeDescriptor {
+struct DLLEXPORT LimitedHingeDescriptor {
 	/*! Default Constructor */
 	LimitedHingeDescriptor();
 	/*! Default Destructor */
diff --git a/gen/MatchGroup.h b/gen/MatchGroup.h
index d580af31..682cf1da 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 MatchGroup {
+struct DLLEXPORT MatchGroup {
 	/*! Default Constructor */
 	MatchGroup();
 	/*! Default Destructor */
diff --git a/gen/MipMap.h b/gen/MipMap.h
index 5b354aa1..edba0619 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 MipMap {
+struct DLLEXPORT MipMap {
 	/*! Default Constructor */
 	MipMap();
 	/*! Default Destructor */
diff --git a/gen/Morph.h b/gen/Morph.h
index 46cb21c5..6bfa1b84 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 Morph {
+struct DLLEXPORT Morph {
 	/*! Default Constructor */
 	Morph();
 	/*! Default Destructor */
diff --git a/gen/NodeGroup.h b/gen/NodeGroup.h
index 170549ca..690f9ec8 100644
--- a/gen/NodeGroup.h
+++ b/gen/NodeGroup.h
@@ -13,7 +13,7 @@ class NiNode;
 /*!
  * A group of NiNodes references.
  */
-struct NodeGroup {
+struct DLLEXPORT NodeGroup {
 	/*! Default Constructor */
 	NodeGroup();
 	/*! Default Destructor */
diff --git a/gen/Particle.h b/gen/Particle.h
index 28b5c6c9..58a0f49a 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 Particle {
+struct DLLEXPORT Particle {
 	/*! Default Constructor */
 	Particle();
 	/*! Default Destructor */
diff --git a/gen/QuaternionXYZW.h b/gen/QuaternionXYZW.h
index 7ff6b5e2..8dfbe074 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 QuaternionXYZW {
+struct DLLEXPORT QuaternionXYZW {
 	/*! Default Constructor */
 	QuaternionXYZW();
 	/*! Default Destructor */
diff --git a/gen/RagDollDescriptor.h b/gen/RagDollDescriptor.h
index e7c9c15e..246f8fbc 100644
--- a/gen/RagDollDescriptor.h
+++ b/gen/RagDollDescriptor.h
@@ -10,7 +10,7 @@ All rights reserved.  Please see niflib.h for licence. */
 /*!
  * 
  */
-struct RagDollDescriptor {
+struct DLLEXPORT RagDollDescriptor {
 	/*! Default Constructor */
 	RagDollDescriptor();
 	/*! Default Destructor */
diff --git a/gen/RotationKeyArray.h b/gen/RotationKeyArray.h
index c4d0ddb1..79cc3689 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 RotationKeyArray {
+struct DLLEXPORT RotationKeyArray {
 	/*!
 	 * Number of keys.
 	 */
diff --git a/gen/ShaderTexDesc.h b/gen/ShaderTexDesc.h
index 830db1be..4c29a1b3 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 ShaderTexDesc {
+struct DLLEXPORT ShaderTexDesc {
 	/*! Default Constructor */
 	ShaderTexDesc();
 	/*! Default Destructor */
diff --git a/gen/ShortString.h b/gen/ShortString.h
index 5492ca43..432a86c3 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 ShortString {
+struct DLLEXPORT ShortString {
 	/*! Default Constructor */
 	ShortString();
 	/*! Default Destructor */
diff --git a/gen/SkinData.h b/gen/SkinData.h
index ba217054..a484a11c 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 SkinData {
+struct DLLEXPORT SkinData {
 	/*! Default Constructor */
 	SkinData();
 	/*! Default Destructor */
diff --git a/gen/SkinPartition.h b/gen/SkinPartition.h
index 9b10c564..4dcc9eb0 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 SkinPartition {
+struct DLLEXPORT SkinPartition {
 	/*! Default Constructor */
 	SkinPartition();
 	/*! Default Destructor */
diff --git a/gen/SkinShape.h b/gen/SkinShape.h
index 46d31006..b66fc298 100644
--- a/gen/SkinShape.h
+++ b/gen/SkinShape.h
@@ -14,7 +14,7 @@ class NiSkinInstance;
 /*!
  * Reference to shape and skin instance.
  */
-struct SkinShape {
+struct DLLEXPORT SkinShape {
 	/*! Default Constructor */
 	SkinShape();
 	/*! Default Destructor */
diff --git a/gen/SkinShapeGroup.h b/gen/SkinShapeGroup.h
index f48cf92d..e9565480 100644
--- a/gen/SkinShapeGroup.h
+++ b/gen/SkinShapeGroup.h
@@ -11,7 +11,7 @@ All rights reserved.  Please see niflib.h for licence. */
 /*!
  * Unknown.
  */
-struct SkinShapeGroup {
+struct DLLEXPORT SkinShapeGroup {
 	/*! Default Constructor */
 	SkinShapeGroup();
 	/*! Default Destructor */
diff --git a/gen/SkinWeight.h b/gen/SkinWeight.h
index 90001536..c974699c 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 SkinWeight {
+struct DLLEXPORT SkinWeight {
 	/*! Default Constructor */
 	SkinWeight();
 	/*! Default Destructor */
diff --git a/gen/StringPalette.h b/gen/StringPalette.h
index ccec65a9..f8098d77 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 StringPalette {
+struct DLLEXPORT StringPalette {
 	/*! Default Constructor */
 	StringPalette();
 	/*! Default Destructor */
diff --git a/gen/TBC.h b/gen/TBC.h
index 35e320fc..9a224229 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 TBC {
+struct DLLEXPORT TBC {
 	/*! Default Constructor */
 	TBC();
 	/*! Default Destructor */
diff --git a/gen/TexDesc.h b/gen/TexDesc.h
index 61c24587..7bc38d20 100644
--- a/gen/TexDesc.h
+++ b/gen/TexDesc.h
@@ -13,7 +13,7 @@ class NiSourceTexture;
 /*!
  * Texture description.
  */
-struct TexDesc {
+struct DLLEXPORT TexDesc {
 	/*! Default Constructor */
 	TexDesc();
 	/*! Default Destructor */
diff --git a/gen/TexSource.h b/gen/TexSource.h
index 612478e8..31722499 100644
--- a/gen/TexSource.h
+++ b/gen/TexSource.h
@@ -14,7 +14,7 @@ class NiPixelData;
 /*!
  * A texture source.
  */
-struct TexSource {
+struct DLLEXPORT TexSource {
 	/*! Default Constructor */
 	TexSource();
 	/*! Default Destructor */
diff --git a/gen/hkTriangle.h b/gen/hkTriangle.h
index 411dda2e..fabe9be8 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 hkTriangle {
+struct DLLEXPORT hkTriangle {
 	/*! Default Constructor */
 	hkTriangle();
 	/*! Default Destructor */
diff --git a/nif_math.h b/nif_math.h
index b83c91fb..80059e89 100644
--- a/nif_math.h
+++ b/nif_math.h
@@ -7,6 +7,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #include <cmath>
 #include <iostream>
 #include <stdexcept>
+#include "dll_export.h"
 
 using namespace std;
 
@@ -28,7 +29,7 @@ struct Float4;
 struct Matrix44;
 
 /*! Stores 2D texture coordinates – two floating point variables, u and v. */
-struct TexCoord {
+struct DLLEXPORT TexCoord {
 	float u; /*!< The U value in this coordinate pair. */ 
 	float v; /*!< The V value in this coordinate pair. */ 
 
@@ -55,7 +56,7 @@ struct TexCoord {
 };
 
 /*! Represents a triangle face formed between three vertices referenced by number */
-struct Triangle {
+struct DLLEXPORT 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. */ 
@@ -108,7 +109,7 @@ struct Triangle {
 };
 
 /*!Represents a position or direction in 3D space*/
-struct Vector3 {
+struct DLLEXPORT 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. */ 
@@ -239,7 +240,7 @@ struct Vector3 {
 };
 
 /* Stores two floating point numbers.  Used as a row of a Matrix22 */
-struct Float2 {
+struct DLLEXPORT 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.
@@ -298,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.
 	 */
-	Float2 & operator[](int n) {
+	DLLEXPORT Float2 & operator[](int n) {
 		return rows[n];
 	}
-	const Float2 & operator[](int n) const {
+	DLLEXPORT const Float2 & operator[](int n) const {
 		return rows[n];
 	}
 
 	/*! Default Constructor */
-	Matrix22();
+	DLLEXPORT 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.
@@ -314,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.
 	 */
-	Matrix22(
+	DLLEXPORT Matrix22(
 		float m11, float m12,
 		float m21, float m22
 	) {
@@ -328,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.
 	 */
-	void Set(
+	DLLEXPORT void Set(
 		float m11, float m12,
 		float m21, float m22
 	) {
@@ -336,10 +337,10 @@ struct Matrix22 {
 		rows[1][0] = m21; rows[1][1] = m22;
 	}
 
-	Quaternion AsQuaternion();
+	DLLEXPORT Quaternion AsQuaternion();
 
 	//Python Operator Overloads
-	Float2 & __getitem__(int n) {
+	DLLEXPORT Float2 & __getitem__(int n) {
 		if (n > 1 || n < 0)
 			throw std::out_of_range("Index out of range for MatrixRow3");
         return rows[n];
@@ -347,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 Float3 {
+struct DLLEXPORT 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.
@@ -410,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.
 	 */
-	Float3 & operator[](int n) {
+	DLLEXPORT Float3 & operator[](int n) {
 		return rows[n];
 	}
-	const Float3 & operator[](int n) const {
+	DLLEXPORT const Float3 & operator[](int n) const {
 		return rows[n];
 	}
 
 	/*! Default constructor.   Initializes matrix to identity.  */
-	Matrix33();
+	DLLEXPORT 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.
@@ -431,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.
 	 */
-	Matrix33(
+	DLLEXPORT Matrix33(
 		float m11, float m12, float m13,
 		float m21, float m22, float m23,
 		float m31, float m32, float m33
@@ -452,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.
 	 */
-	void Set(
+	DLLEXPORT void Set(
 		float m11, float m12, float m13,
 		float m21, float m22, float m23,
 		float m31, float m32, float m33
@@ -465,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.
 	 */
-	Quaternion AsQuaternion();
+	DLLEXPORT Quaternion AsQuaternion();
 
 	/*! Calculates the determinant of this matrix.
 	 * \return The determinant of this matrix.
 	 */
-	float Determinant() const;
+	DLLEXPORT float Determinant() const;
 
 	//Undocumented
-	void AsFloatArr( float out[3][3] ) {
+	DLLEXPORT 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
-	Float3 & __getitem__(int n) {
+	DLLEXPORT Float3 & __getitem__(int n) {
 		if (n > 2 || n < 0)
 			throw std::out_of_range("Index out of range for MatrixRow3");
         return rows[n];
@@ -488,7 +489,7 @@ struct Matrix33 {
 };
 
 /* Stores four floating point numbers.  Used as a row of a Matrix44. */
-struct Float4 {
+struct DLLEXPORT 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.
@@ -555,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.
 	 */
-	Float4 & operator[](int n) {
+	DLLEXPORT Float4 & operator[](int n) {
 		return rows[n];
 	}
-	Float4 const & operator[](int n) const {
+	DLLEXPORT Float4 const & operator[](int n) const {
 		return rows[n];
 	}
 
 	/*! Default constructor. Initializes Matrix to Identity. */
-	Matrix44();
+	DLLEXPORT Matrix44();
 
 	/*! Copy constructor.  Initializes Matrix to another Matrix44.
 	 * \param The matrix to initialize this one to. 
 	 */
-	Matrix44( const Matrix44 & m ) { memcpy(rows, m.rows, sizeof(Float4) * 4); }
+	DLLEXPORT 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.
@@ -588,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.
 	 */
-	Matrix44(
+	DLLEXPORT 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,
@@ -606,7 +607,7 @@ struct Matrix44 {
 	 * \param rotate The 3x3 rotation matrix.
 	 * \param scale The scale factor.
 	 */
-	Matrix44( const Vector3 & translate, const Matrix33 & rotation, float scale );
+	DLLEXPORT 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.
@@ -642,94 +643,94 @@ struct Matrix44 {
 	 * \param rh The matrix to multiply this one with.
 	 * \return The result of the multiplication.
 	 */
-	Matrix44 operator*( const Matrix44 & rh ) const;
+	DLLEXPORT 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.
 	 */
-	Matrix44 & operator*=( const Matrix44 & rh );
+	DLLEXPORT 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.
 	 */
-	Matrix44 operator*( float rh ) const;
+	DLLEXPORT 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.
 	 */
-	Matrix44 & operator*=( float rh );
+	DLLEXPORT 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.
 	 */
-	Vector3 operator*( const Vector3 & rh ) const;
+	DLLEXPORT 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.
 	 */
-	Matrix44 operator+( const Matrix44 & rh ) const;
+	DLLEXPORT 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.
 	 */
-	Matrix44 & operator+=( const Matrix44 & rh );
+	DLLEXPORT 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.
 	 */
-	Matrix44 & operator=( const Matrix44 & rh );
+	DLLEXPORT 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.
 	 */
-	bool operator==( const Matrix44 & rh ) const;
+	DLLEXPORT 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.
 	 */
-	friend ostream & operator<<( ostream & lh, const Matrix44 & rh );
+	DLLEXPORT friend ostream & operator<<( ostream & lh, const Matrix44 & rh );
 
 	/*! Calculates the transpose of this matrix.
 	 * \return The transpose of this matrix.
 	 */
-	Matrix44 Transpose() const;
+	DLLEXPORT Matrix44 Transpose() const;
 
 	/*! Calculates the determinant of this matrix.
 	 * \return The determinant of this matrix.
 	 */
-	float Determinant() const;
+	DLLEXPORT float Determinant() const;
 
 	/*! Calculates the inverse of this matrix.
 	 * \retun The inverse of this matrix.
 	 */
-	Matrix44 Inverse() const;
+	DLLEXPORT 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.
 	 */
-	Matrix33 Submatrix( int skip_r, int skip_c ) const;
+	DLLEXPORT 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.
 	 */
-	float Adjunct( int skip_r, int skip_c ) const;
+	DLLEXPORT float Adjunct( int skip_r, int skip_c ) const;
 
 	//undocumented
-	void AsFloatArr( float out[4][4] ) {
+	DLLEXPORT 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];
@@ -737,7 +738,7 @@ struct Matrix44 {
 	}
 
 	//Python Operator Overloads
-	Float4 & __getitem__(int n) {
+	DLLEXPORT Float4 & __getitem__(int n) {
 		if (n > 3 || n < 0)
 			throw std::out_of_range("Index out of range for Matrix44");
         return rows[n];
@@ -745,7 +746,7 @@ struct Matrix44 {
 };
 
 /*! Stores a color along with alpha translucency */
-struct Color4 {
+struct DLLEXPORT 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. */ 
@@ -782,7 +783,7 @@ struct Color4 {
 };
 
 /*! Represents a quaternion - a 4D extention of complex numbers used as an alternitive to matrices to represent rotation.*/
-struct Quaternion {
+struct DLLEXPORT 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.h b/niflib.h
index e5363a0f..2a313a35 100644
--- a/niflib.h
+++ b/niflib.h
@@ -50,7 +50,7 @@ POSSIBILITY OF SUCH DAMAGE. */
 #include "nif_math.h"
 #include "NIF_IO.h"
 #include "obj/NiObject.h"
-#include "gen/obj_defines.h"
+//#include "gen/obj_defines.h"
 #include "kfm.h"
 
 using namespace std;
@@ -73,7 +73,7 @@ using namespace std;
  * if ( ver == VER_UNSUPPORTED ) cout << "unsupported" << endl;
  * else if ( ver == VER_INVALID ) cout << "invalid" << endl;
  * else {
- *   vector<blk_ref> blocks = ReadNifList( "test_in.nif" );
+ *   vector<NiObjectRef> blocks = ReadNifList( "test_in.nif" );
  *   cout << blocks[0] << endl;
  * };
  *
@@ -91,7 +91,7 @@ using namespace std;
  *      print blocks[0]
  * \endcode
  */
-unsigned int CheckNifHeader( string const & file_name );
+DLLEXPORT unsigned int CheckNifHeader( string const & file_name );
 
 /*!
  * Reads the given file by file name and returns a vector of block references
@@ -100,7 +100,7 @@ unsigned int CheckNifHeader( string const & file_name );
  * 
  * <b>Example:</b> 
  * \code
- * blk_ref my_block = ReadNifList("test_in.nif");
+ * NiObjectRef my_block = ReadNifList("test_in.nif");
  * \endcode
  * 
  * <b>In Python:</b>
@@ -110,14 +110,14 @@ unsigned int CheckNifHeader( string const & file_name );
  * 
  * \sa ReadNifTree, WriteNifTree
  */
-vector<NiObjectRef> ReadNifList( string const & file_name );
+DLLEXPORT 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.
  */
-vector<blk_ref> ReadNifList( istream & in );
+DLLEXPORT vector<NiObjectRef> ReadNifList( istream & in );
 
 /*!
  * Reads the given file by file name and returns a reference to the root block.
@@ -126,7 +126,7 @@ vector<blk_ref> ReadNifList( istream & in );
  * 
  * <b>Example:</b> 
  * \code
- * blk_ref my_block = ReadNifTree("test_in.nif");
+ * NiObjectRef my_block = ReadNifTree("test_in.nif");
  * \endcode
  * 
  * <b>In Python:</b>
@@ -136,14 +136,14 @@ vector<blk_ref> ReadNifList( istream & in );
  * 
  * \sa ReadNifList, WriteNifTree
  */
-blk_ref ReadNifTree( string const & file_name );
+DLLEXPORT 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.
  */
-blk_ref ReadNifTree( istream & in );
+DLLEXPORT 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.
@@ -154,7 +154,7 @@ blk_ref ReadNifTree( istream & in );
  * 
  * <b>Example:</b> 
  * \code
- * blk_ref my_block = ReadNifTree("test_in.nif");
+ * NiObjectRef my_block = ReadNifTree("test_in.nif");
  * WriteNifTree( "test_out.nif", my_block );
  * \endcode
  * 
@@ -166,7 +166,7 @@ blk_ref ReadNifTree( istream & in );
  * 
  * \sa ReadNifList, WriteNifTree
  */
-void WriteNifTree( string const & file_name, NiObjectRef const & root, unsigned int version = VER_4_0_0_2, unsigned int user_version = 0 );
+DLLEXPORT 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 @@ void WriteNifTree( string const & file_name, NiObjectRef const & root, unsigned
  * \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.
  */
-void WriteNifTree( ostream & stream, NiObjectRef const & root, unsigned int version = VER_4_0_0_2, unsigned int user_version = 0 );
+DLLEXPORT 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 @@ void WriteNifTree( ostream & stream, NiObjectRef const & root, unsigned int vers
  * \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, ...)
  */
-void WriteFileGroup( string const & file_name, blk_ref const & root, unsigned int version, unsigned int export_files, unsigned int kf_type );
+DLLEXPORT 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,11 +192,11 @@ void WriteFileGroup( string const & file_name, blk_ref const & root, unsigned in
  * \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.
  */
-void MergeNifTrees( blk_ref target, blk_ref right, unsigned int version = 0xFFFFFFFF );
+DLLEXPORT void MergeNifTrees( NiObjectRef target, NiObjectRef right, unsigned int version = 0xFFFFFFFF );
 
 
 //// Returns list of all blocks in the tree rooted by root block.
-//list<blk_ref> GetNifTree( blk_ref const & root_block );
+//list<NiObjectRef> GetNifTree( NiObjectRef const & root_block );
 
 ////Returns the NIF spec version of a file, given a file name.
 //string GetFileVersion(string file_name);
@@ -208,7 +208,7 @@ void MergeNifTrees( blk_ref target, blk_ref right, unsigned int version = 0xFFFF
  * 
  * <b>Example:</b> 
  * \code
- * blk_ref my_block = CreateBlock("NiNode");
+ * NiObjectRef my_block = CreateBlock("NiNode");
  * \endcode
  * 
  * <b>In Python:</b>
@@ -218,7 +218,7 @@ void MergeNifTrees( blk_ref target, blk_ref right, unsigned int version = 0xFFFF
  * 
  * sa BlocksInMemory
  */
-blk_ref CreateBlock( string block_type );
+DLLEXPORT NiObjectRef CreateBlock( string block_type );
 
 
 
diff --git a/niflib.vcproj b/niflib.vcproj
index 351416fb..94f59012 100644
--- a/niflib.vcproj
+++ b/niflib.vcproj
@@ -82,7 +82,7 @@
 			Name="Release|Win32"
 			OutputDirectory="..\Release"
 			IntermediateDirectory="..\Release"
-			ConfigurationType="4"
+			ConfigurationType="2"
 			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"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BUILDING_DLL"
 				RuntimeLibrary="0"
 				UsePrecompiledHeader="2"
 				PrecompiledHeaderThrough="pch.h"
@@ -124,12 +124,15 @@
 				Name="VCPreLinkEventTool"
 			/>
 			<Tool
-				Name="VCLibrarianTool"
-				OutputFile="../bin/niflib.lib"
+				Name="VCLinkerTool"
+				OutputFile="..\bin\niflib.dll"
 			/>
 			<Tool
 				Name="VCALinkTool"
 			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
 			<Tool
 				Name="VCXDCMakeTool"
 			/>
@@ -139,6 +142,12 @@
 			<Tool
 				Name="VCFxCopTool"
 			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
 			<Tool
 				Name="VCPostBuildEventTool"
 			/>
@@ -1234,6 +1243,10 @@
 			Filter="h;hpp;hxx;hm;inl;inc;xsd"
 			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
 			>
+			<File
+				RelativePath=".\dll_export.h"
+				>
+			</File>
 			<File
 				RelativePath=".\NIF_IO.h"
 				>
diff --git a/obj/ABoneLODController.h b/obj/ABoneLODController.h
index 49137873..8d82ef84 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 ABoneLODController : public A_BONE_L_O_D_CONTROLLER_PARENT {
+class DLLEXPORT ABoneLODController : public A_BONE_L_O_D_CONTROLLER_PARENT {
 public:
 	ABoneLODController();
 	~ABoneLODController();
diff --git a/obj/AKeyedData.h b/obj/AKeyedData.h
index 7e7e5e22..6260c94b 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 AKeyedData : public A_KEYED_DATA_PARENT {
+class DLLEXPORT AKeyedData : public A_KEYED_DATA_PARENT {
 public:
 	AKeyedData();
 	~AKeyedData();
diff --git a/obj/APSysCtlr.h b/obj/APSysCtlr.h
index 75e53a69..e9dab094 100644
--- a/obj/APSysCtlr.h
+++ b/obj/APSysCtlr.h
@@ -15,7 +15,7 @@ typedef Ref<APSysCtlr> APSysCtlrRef;
  * APSysCtlr - Unknown.
  */
 
-class APSysCtlr : public A_P_SYS_CTLR_PARENT {
+class DLLEXPORT APSysCtlr : public A_P_SYS_CTLR_PARENT {
 public:
 	APSysCtlr();
 	~APSysCtlr();
diff --git a/obj/APSysData.h b/obj/APSysData.h
index 1e0503c7..cdd5bb93 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 APSysData : public A_P_SYS_DATA_PARENT {
+class DLLEXPORT APSysData : public A_P_SYS_DATA_PARENT {
 public:
 	APSysData();
 	~APSysData();
diff --git a/obj/AParticleModifier.h b/obj/AParticleModifier.h
index 18c81f74..b3a44559 100644
--- a/obj/AParticleModifier.h
+++ b/obj/AParticleModifier.h
@@ -19,7 +19,7 @@ typedef Ref<AParticleModifier> AParticleModifierRef;
  * AParticleModifier - A particle system modifier.
  */
 
-class AParticleModifier : public A_PARTICLE_MODIFIER_PARENT {
+class DLLEXPORT AParticleModifier : public A_PARTICLE_MODIFIER_PARENT {
 public:
 	AParticleModifier();
 	~AParticleModifier();
diff --git a/obj/AbhkConstraint.h b/obj/AbhkConstraint.h
index a23891e9..7b9cc5ed 100644
--- a/obj/AbhkConstraint.h
+++ b/obj/AbhkConstraint.h
@@ -19,7 +19,7 @@ typedef Ref<AbhkConstraint> AbhkConstraintRef;
  * AbhkConstraint - Describes a physical constraint.
  */
 
-class AbhkConstraint : public ABHK_CONSTRAINT_PARENT {
+class DLLEXPORT AbhkConstraint : public ABHK_CONSTRAINT_PARENT {
 public:
 	AbhkConstraint();
 	~AbhkConstraint();
diff --git a/obj/AbhkRagdollConstraint.h b/obj/AbhkRagdollConstraint.h
index dd1bc2b3..3887ec8a 100644
--- a/obj/AbhkRagdollConstraint.h
+++ b/obj/AbhkRagdollConstraint.h
@@ -15,7 +15,7 @@ typedef Ref<AbhkRagdollConstraint> AbhkRagdollConstraintRef;
  * AbhkRagdollConstraint - Ragdoll constraint.
  */
 
-class AbhkRagdollConstraint : public ABHK_RAGDOLL_CONSTRAINT_PARENT {
+class DLLEXPORT AbhkRagdollConstraint : public ABHK_RAGDOLL_CONSTRAINT_PARENT {
 public:
 	AbhkRagdollConstraint();
 	~AbhkRagdollConstraint();
diff --git a/obj/AbhkShapeCollection.h b/obj/AbhkShapeCollection.h
index 3d2d3de9..e61cfdde 100644
--- a/obj/AbhkShapeCollection.h
+++ b/obj/AbhkShapeCollection.h
@@ -16,7 +16,7 @@ typedef Ref<AbhkShapeCollection> AbhkShapeCollectionRef;
  * hierarchy.
  */
 
-class AbhkShapeCollection : public ABHK_SHAPE_COLLECTION_PARENT {
+class DLLEXPORT AbhkShapeCollection : public ABHK_SHAPE_COLLECTION_PARENT {
 public:
 	AbhkShapeCollection();
 	~AbhkShapeCollection();
diff --git a/obj/AvoidNode.h b/obj/AvoidNode.h
index d7d7d525..0656d359 100644
--- a/obj/AvoidNode.h
+++ b/obj/AvoidNode.h
@@ -15,7 +15,7 @@ typedef Ref<AvoidNode> AvoidNodeRef;
  * AvoidNode - Morrowind specific?
  */
 
-class AvoidNode : public AVOID_NODE_PARENT {
+class DLLEXPORT AvoidNode : public AVOID_NODE_PARENT {
 public:
 	AvoidNode();
 	~AvoidNode();
diff --git a/obj/BSBound.h b/obj/BSBound.h
index 56060dd3..56358d27 100644
--- a/obj/BSBound.h
+++ b/obj/BSBound.h
@@ -15,7 +15,7 @@ typedef Ref<BSBound> BSBoundRef;
  * BSBound - Unknown.
  */
 
-class BSBound : public B_S_BOUND_PARENT {
+class DLLEXPORT BSBound : public B_S_BOUND_PARENT {
 public:
 	BSBound();
 	~BSBound();
diff --git a/obj/BSFurnitureMarker.h b/obj/BSFurnitureMarker.h
index 8476eb7a..9a20e7e3 100644
--- a/obj/BSFurnitureMarker.h
+++ b/obj/BSFurnitureMarker.h
@@ -17,7 +17,7 @@ typedef Ref<BSFurnitureMarker> BSFurnitureMarkerRef;
  * BSFurnitureMarker - Unknown. Marks furniture sitting positions?
  */
 
-class BSFurnitureMarker : public B_S_FURNITURE_MARKER_PARENT {
+class DLLEXPORT BSFurnitureMarker : public B_S_FURNITURE_MARKER_PARENT {
 public:
 	BSFurnitureMarker();
 	~BSFurnitureMarker();
diff --git a/obj/BSKeyframeController.h b/obj/BSKeyframeController.h
index 2d4cef82..245fdf2d 100644
--- a/obj/BSKeyframeController.h
+++ b/obj/BSKeyframeController.h
@@ -19,7 +19,7 @@ typedef Ref<BSKeyframeController> BSKeyframeControllerRef;
  * BSKeyframeController - An extended keyframe controller.
  */
 
-class BSKeyframeController : public B_S_KEYFRAME_CONTROLLER_PARENT {
+class DLLEXPORT BSKeyframeController : public B_S_KEYFRAME_CONTROLLER_PARENT {
 public:
 	BSKeyframeController();
 	~BSKeyframeController();
diff --git a/obj/BSPSysArrayEmitter.h b/obj/BSPSysArrayEmitter.h
index 548a05ae..2c312574 100644
--- a/obj/BSPSysArrayEmitter.h
+++ b/obj/BSPSysArrayEmitter.h
@@ -15,7 +15,7 @@ typedef Ref<BSPSysArrayEmitter> BSPSysArrayEmitterRef;
  * BSPSysArrayEmitter - Unknown.
  */
 
-class BSPSysArrayEmitter : public B_S_P_SYS_ARRAY_EMITTER_PARENT {
+class DLLEXPORT BSPSysArrayEmitter : public B_S_P_SYS_ARRAY_EMITTER_PARENT {
 public:
 	BSPSysArrayEmitter();
 	~BSPSysArrayEmitter();
diff --git a/obj/BSParentVelocityModifier.h b/obj/BSParentVelocityModifier.h
index bce2015f..624b315d 100644
--- a/obj/BSParentVelocityModifier.h
+++ b/obj/BSParentVelocityModifier.h
@@ -15,7 +15,7 @@ typedef Ref<BSParentVelocityModifier> BSParentVelocityModifierRef;
  * BSParentVelocityModifier - Unknown.
  */
 
-class BSParentVelocityModifier : public B_S_PARENT_VELOCITY_MODIFIER_PARENT {
+class DLLEXPORT BSParentVelocityModifier : public B_S_PARENT_VELOCITY_MODIFIER_PARENT {
 public:
 	BSParentVelocityModifier();
 	~BSParentVelocityModifier();
diff --git a/obj/BSXFlags.h b/obj/BSXFlags.h
index 2a6e33a4..ce390772 100644
--- a/obj/BSXFlags.h
+++ b/obj/BSXFlags.h
@@ -15,7 +15,7 @@ typedef Ref<BSXFlags> BSXFlagsRef;
  * BSXFlags - Unknown.
  */
 
-class BSXFlags : public B_S_X_FLAGS_PARENT {
+class DLLEXPORT BSXFlags : public B_S_X_FLAGS_PARENT {
 public:
 	BSXFlags();
 	~BSXFlags();
diff --git a/obj/FxButton.h b/obj/FxButton.h
index 5629c9e8..f52295af 100644
--- a/obj/FxButton.h
+++ b/obj/FxButton.h
@@ -15,7 +15,7 @@ typedef Ref<FxButton> FxButtonRef;
  * FxButton - Unknown.
  */
 
-class FxButton : public FX_BUTTON_PARENT {
+class DLLEXPORT FxButton : public FX_BUTTON_PARENT {
 public:
 	FxButton();
 	~FxButton();
diff --git a/obj/FxRadioButton.h b/obj/FxRadioButton.h
index 533472e1..1870ae49 100644
--- a/obj/FxRadioButton.h
+++ b/obj/FxRadioButton.h
@@ -19,7 +19,7 @@ typedef Ref<FxRadioButton> FxRadioButtonRef;
  * FxRadioButton - Unknown.
  */
 
-class FxRadioButton : public FX_RADIO_BUTTON_PARENT {
+class DLLEXPORT FxRadioButton : public FX_RADIO_BUTTON_PARENT {
 public:
 	FxRadioButton();
 	~FxRadioButton();
diff --git a/obj/FxWidget.h b/obj/FxWidget.h
index 143b9772..e199a45b 100644
--- a/obj/FxWidget.h
+++ b/obj/FxWidget.h
@@ -15,7 +15,7 @@ typedef Ref<FxWidget> FxWidgetRef;
  * FxWidget - Firaxis-specific UI widgets?
  */
 
-class FxWidget : public FX_WIDGET_PARENT {
+class DLLEXPORT FxWidget : public FX_WIDGET_PARENT {
 public:
 	FxWidget();
 	~FxWidget();
diff --git a/obj/NiAVObject.h b/obj/NiAVObject.h
index 6d4214e3..094fc4fa 100644
--- a/obj/NiAVObject.h
+++ b/obj/NiAVObject.h
@@ -23,7 +23,7 @@ class NiNode;
 class NiAVObject;
 typedef Ref<NiAVObject> NiAVObjectRef;
 
-class NiAVObject : public NI_A_V_OBJECT_PARENT {
+class DLLEXPORT NiAVObject : public NI_A_V_OBJECT_PARENT {
 public:
 	NiAVObject();
 	~NiAVObject();
diff --git a/obj/NiAlphaController.h b/obj/NiAlphaController.h
index 55459087..710ead8d 100644
--- a/obj/NiAlphaController.h
+++ b/obj/NiAlphaController.h
@@ -19,7 +19,7 @@ typedef Ref<NiAlphaController> NiAlphaControllerRef;
  * NiAlphaController - Time controller for transparency.
  */
 
-class NiAlphaController : public NI_ALPHA_CONTROLLER_PARENT {
+class DLLEXPORT NiAlphaController : public NI_ALPHA_CONTROLLER_PARENT {
 public:
 	NiAlphaController();
 	~NiAlphaController();
diff --git a/obj/NiAlphaProperty.h b/obj/NiAlphaProperty.h
index 702a1a0c..ec5afac8 100644
--- a/obj/NiAlphaProperty.h
+++ b/obj/NiAlphaProperty.h
@@ -15,7 +15,7 @@ typedef Ref<NiAlphaProperty> NiAlphaPropertyRef;
  * NiAlphaProperty - Transparency. Flags 0x00ED.
  */
 
-class NiAlphaProperty : public NI_ALPHA_PROPERTY_PARENT {
+class DLLEXPORT NiAlphaProperty : public NI_ALPHA_PROPERTY_PARENT {
 public:
 	NiAlphaProperty();
 	~NiAlphaProperty();
diff --git a/obj/NiAmbientLight.h b/obj/NiAmbientLight.h
index 67455120..8aa44b40 100644
--- a/obj/NiAmbientLight.h
+++ b/obj/NiAmbientLight.h
@@ -15,7 +15,7 @@ typedef Ref<NiAmbientLight> NiAmbientLightRef;
  * NiAmbientLight - Ambient light source.
  */
 
-class NiAmbientLight : public NI_AMBIENT_LIGHT_PARENT {
+class DLLEXPORT NiAmbientLight : public NI_AMBIENT_LIGHT_PARENT {
 public:
 	NiAmbientLight();
 	~NiAmbientLight();
diff --git a/obj/NiAutoNormalParticles.h b/obj/NiAutoNormalParticles.h
index 60785b6d..41267528 100644
--- a/obj/NiAutoNormalParticles.h
+++ b/obj/NiAutoNormalParticles.h
@@ -15,7 +15,7 @@ typedef Ref<NiAutoNormalParticles> NiAutoNormalParticlesRef;
  * NiAutoNormalParticles - Unknown.
  */
 
-class NiAutoNormalParticles : public NI_AUTO_NORMAL_PARTICLES_PARENT {
+class DLLEXPORT NiAutoNormalParticles : public NI_AUTO_NORMAL_PARTICLES_PARENT {
 public:
 	NiAutoNormalParticles();
 	~NiAutoNormalParticles();
diff --git a/obj/NiAutoNormalParticlesData.h b/obj/NiAutoNormalParticlesData.h
index 39015c46..e9059509 100644
--- a/obj/NiAutoNormalParticlesData.h
+++ b/obj/NiAutoNormalParticlesData.h
@@ -16,7 +16,7 @@ typedef Ref<NiAutoNormalParticlesData> NiAutoNormalParticlesDataRef;
  * normals?).
  */
 
-class NiAutoNormalParticlesData : public NI_AUTO_NORMAL_PARTICLES_DATA_PARENT {
+class DLLEXPORT NiAutoNormalParticlesData : public NI_AUTO_NORMAL_PARTICLES_DATA_PARENT {
 public:
 	NiAutoNormalParticlesData();
 	~NiAutoNormalParticlesData();
diff --git a/obj/NiBSAnimationNode.h b/obj/NiBSAnimationNode.h
index 4dfa403c..2abc3fa6 100644
--- a/obj/NiBSAnimationNode.h
+++ b/obj/NiBSAnimationNode.h
@@ -16,7 +16,7 @@ typedef Ref<NiBSAnimationNode> NiBSAnimationNodeRef;
  * properties stored in the flags.
  */
 
-class NiBSAnimationNode : public NI_B_S_ANIMATION_NODE_PARENT {
+class DLLEXPORT NiBSAnimationNode : public NI_B_S_ANIMATION_NODE_PARENT {
 public:
 	NiBSAnimationNode();
 	~NiBSAnimationNode();
diff --git a/obj/NiBSBoneLODController.h b/obj/NiBSBoneLODController.h
index feab116b..4b2457ed 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 NiBSBoneLODController : public NI_B_S_BONE_L_O_D_CONTROLLER_PARENT {
+class DLLEXPORT 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 ca818538..06551f46 100644
--- a/obj/NiBSPArrayController.h
+++ b/obj/NiBSPArrayController.h
@@ -16,7 +16,7 @@ typedef Ref<NiBSPArrayController> NiBSPArrayControllerRef;
  * conjunction with NiBSParticleNode.
  */
 
-class NiBSPArrayController : public NI_B_S_P_ARRAY_CONTROLLER_PARENT {
+class DLLEXPORT NiBSPArrayController : public NI_B_S_P_ARRAY_CONTROLLER_PARENT {
 public:
 	NiBSPArrayController();
 	~NiBSPArrayController();
diff --git a/obj/NiBSParticleNode.h b/obj/NiBSParticleNode.h
index f0cf54bf..431c88af 100644
--- a/obj/NiBSParticleNode.h
+++ b/obj/NiBSParticleNode.h
@@ -15,7 +15,7 @@ typedef Ref<NiBSParticleNode> NiBSParticleNodeRef;
  * NiBSParticleNode - Unknown.
  */
 
-class NiBSParticleNode : public NI_B_S_PARTICLE_NODE_PARENT {
+class DLLEXPORT NiBSParticleNode : public NI_B_S_PARTICLE_NODE_PARENT {
 public:
 	NiBSParticleNode();
 	~NiBSParticleNode();
diff --git a/obj/NiBSplineBasisData.h b/obj/NiBSplineBasisData.h
index 84c01090..71492e79 100644
--- a/obj/NiBSplineBasisData.h
+++ b/obj/NiBSplineBasisData.h
@@ -15,7 +15,7 @@ typedef Ref<NiBSplineBasisData> NiBSplineBasisDataRef;
  * NiBSplineBasisData - Unknown.
  */
 
-class NiBSplineBasisData : public NI_B_SPLINE_BASIS_DATA_PARENT {
+class DLLEXPORT NiBSplineBasisData : public NI_B_SPLINE_BASIS_DATA_PARENT {
 public:
 	NiBSplineBasisData();
 	~NiBSplineBasisData();
diff --git a/obj/NiBSplineCompFloatInterpolator.h b/obj/NiBSplineCompFloatInterpolator.h
index f0720b33..06c0d56d 100644
--- a/obj/NiBSplineCompFloatInterpolator.h
+++ b/obj/NiBSplineCompFloatInterpolator.h
@@ -15,7 +15,7 @@ typedef Ref<NiBSplineCompFloatInterpolator> NiBSplineCompFloatInterpolatorRef;
  * NiBSplineCompFloatInterpolator - Unknown.
  */
 
-class NiBSplineCompFloatInterpolator : public NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_PARENT {
+class DLLEXPORT NiBSplineCompFloatInterpolator : public NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_PARENT {
 public:
 	NiBSplineCompFloatInterpolator();
 	~NiBSplineCompFloatInterpolator();
diff --git a/obj/NiBSplineCompPoint3Interpolator.h b/obj/NiBSplineCompPoint3Interpolator.h
index 647f6273..7065f259 100644
--- a/obj/NiBSplineCompPoint3Interpolator.h
+++ b/obj/NiBSplineCompPoint3Interpolator.h
@@ -20,7 +20,7 @@ typedef Ref<NiBSplineCompPoint3Interpolator> NiBSplineCompPoint3InterpolatorRef;
  * NiBSplineCompPoint3Interpolator - Unknown.
  */
 
-class NiBSplineCompPoint3Interpolator : public NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_PARENT {
+class DLLEXPORT NiBSplineCompPoint3Interpolator : public NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_PARENT {
 public:
 	NiBSplineCompPoint3Interpolator();
 	~NiBSplineCompPoint3Interpolator();
diff --git a/obj/NiBSplineCompTransformInterpolator.h b/obj/NiBSplineCompTransformInterpolator.h
index cd017266..cce870b2 100644
--- a/obj/NiBSplineCompTransformInterpolator.h
+++ b/obj/NiBSplineCompTransformInterpolator.h
@@ -20,7 +20,7 @@ typedef Ref<NiBSplineCompTransformInterpolator> NiBSplineCompTransformInterpolat
  * NiBSplineCompTransformInterpolator - Unknown.
  */
 
-class NiBSplineCompTransformInterpolator : public NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_PARENT {
+class DLLEXPORT NiBSplineCompTransformInterpolator : public NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_PARENT {
 public:
 	NiBSplineCompTransformInterpolator();
 	~NiBSplineCompTransformInterpolator();
diff --git a/obj/NiBSplineInterpolator.h b/obj/NiBSplineInterpolator.h
index 43ba9f2e..3203bc3b 100644
--- a/obj/NiBSplineInterpolator.h
+++ b/obj/NiBSplineInterpolator.h
@@ -15,7 +15,7 @@ typedef Ref<NiBSplineInterpolator> NiBSplineInterpolatorRef;
  * NiBSplineInterpolator - A B-spline (component?) interpolator.
  */
 
-class NiBSplineInterpolator : public NI_B_SPLINE_INTERPOLATOR_PARENT {
+class DLLEXPORT NiBSplineInterpolator : public NI_B_SPLINE_INTERPOLATOR_PARENT {
 public:
 	NiBSplineInterpolator();
 	~NiBSplineInterpolator();
diff --git a/obj/NiBillboardNode.h b/obj/NiBillboardNode.h
index 60d57abd..2fda1ebc 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 NiBillboardNode : public NI_BILLBOARD_NODE_PARENT {
+class DLLEXPORT NiBillboardNode : public NI_BILLBOARD_NODE_PARENT {
 public:
 	NiBillboardNode();
 	~NiBillboardNode();
diff --git a/obj/NiBinaryExtraData.h b/obj/NiBinaryExtraData.h
index bf26579e..6409d9a8 100644
--- a/obj/NiBinaryExtraData.h
+++ b/obj/NiBinaryExtraData.h
@@ -18,7 +18,7 @@ typedef Ref<NiBinaryExtraData> NiBinaryExtraDataRef;
  * binormals in Oblivion.
  */
 
-class NiBinaryExtraData : public NI_BINARY_EXTRA_DATA_PARENT {
+class DLLEXPORT NiBinaryExtraData : public NI_BINARY_EXTRA_DATA_PARENT {
 public:
 	NiBinaryExtraData();
 	~NiBinaryExtraData();
diff --git a/obj/NiBlendBoolInterpolator.h b/obj/NiBlendBoolInterpolator.h
index e8cdef0d..501216c5 100644
--- a/obj/NiBlendBoolInterpolator.h
+++ b/obj/NiBlendBoolInterpolator.h
@@ -15,7 +15,7 @@ typedef Ref<NiBlendBoolInterpolator> NiBlendBoolInterpolatorRef;
  * NiBlendBoolInterpolator - An interpolator for a bool.
  */
 
-class NiBlendBoolInterpolator : public NI_BLEND_BOOL_INTERPOLATOR_PARENT {
+class DLLEXPORT NiBlendBoolInterpolator : public NI_BLEND_BOOL_INTERPOLATOR_PARENT {
 public:
 	NiBlendBoolInterpolator();
 	~NiBlendBoolInterpolator();
diff --git a/obj/NiBlendFloatInterpolator.h b/obj/NiBlendFloatInterpolator.h
index 0d529b49..fe888e11 100644
--- a/obj/NiBlendFloatInterpolator.h
+++ b/obj/NiBlendFloatInterpolator.h
@@ -15,7 +15,7 @@ typedef Ref<NiBlendFloatInterpolator> NiBlendFloatInterpolatorRef;
  * NiBlendFloatInterpolator - An interpolator for a float.
  */
 
-class NiBlendFloatInterpolator : public NI_BLEND_FLOAT_INTERPOLATOR_PARENT {
+class DLLEXPORT NiBlendFloatInterpolator : public NI_BLEND_FLOAT_INTERPOLATOR_PARENT {
 public:
 	NiBlendFloatInterpolator();
 	~NiBlendFloatInterpolator();
diff --git a/obj/NiBlendInterpolator.h b/obj/NiBlendInterpolator.h
index fb00799d..c879585f 100644
--- a/obj/NiBlendInterpolator.h
+++ b/obj/NiBlendInterpolator.h
@@ -15,7 +15,7 @@ typedef Ref<NiBlendInterpolator> NiBlendInterpolatorRef;
  * NiBlendInterpolator - An extended type of interpolater.
  */
 
-class NiBlendInterpolator : public NI_BLEND_INTERPOLATOR_PARENT {
+class DLLEXPORT NiBlendInterpolator : public NI_BLEND_INTERPOLATOR_PARENT {
 public:
 	NiBlendInterpolator();
 	~NiBlendInterpolator();
diff --git a/obj/NiBlendPoint3Interpolator.h b/obj/NiBlendPoint3Interpolator.h
index 350ba727..6f20e256 100644
--- a/obj/NiBlendPoint3Interpolator.h
+++ b/obj/NiBlendPoint3Interpolator.h
@@ -15,7 +15,7 @@ typedef Ref<NiBlendPoint3Interpolator> NiBlendPoint3InterpolatorRef;
  * NiBlendPoint3Interpolator - Interpolates a point?
  */
 
-class NiBlendPoint3Interpolator : public NI_BLEND_POINT3_INTERPOLATOR_PARENT {
+class DLLEXPORT NiBlendPoint3Interpolator : public NI_BLEND_POINT3_INTERPOLATOR_PARENT {
 public:
 	NiBlendPoint3Interpolator();
 	~NiBlendPoint3Interpolator();
diff --git a/obj/NiBlendTransformInterpolator.h b/obj/NiBlendTransformInterpolator.h
index c0503ef3..f3d6600c 100644
--- a/obj/NiBlendTransformInterpolator.h
+++ b/obj/NiBlendTransformInterpolator.h
@@ -15,7 +15,7 @@ typedef Ref<NiBlendTransformInterpolator> NiBlendTransformInterpolatorRef;
  * NiBlendTransformInterpolator - Unknown.
  */
 
-class NiBlendTransformInterpolator : public NI_BLEND_TRANSFORM_INTERPOLATOR_PARENT {
+class DLLEXPORT NiBlendTransformInterpolator : public NI_BLEND_TRANSFORM_INTERPOLATOR_PARENT {
 public:
 	NiBlendTransformInterpolator();
 	~NiBlendTransformInterpolator();
diff --git a/obj/NiBoneLODController.h b/obj/NiBoneLODController.h
index dd55df91..a27ab952 100644
--- a/obj/NiBoneLODController.h
+++ b/obj/NiBoneLODController.h
@@ -21,7 +21,7 @@ typedef Ref<NiBoneLODController> NiBoneLODControllerRef;
  * NiBoneLODController - A LOD controller for bones?
  */
 
-class NiBoneLODController : public NI_BONE_L_O_D_CONTROLLER_PARENT {
+class DLLEXPORT NiBoneLODController : public NI_BONE_L_O_D_CONTROLLER_PARENT {
 public:
 	NiBoneLODController();
 	~NiBoneLODController();
diff --git a/obj/NiBoolData.h b/obj/NiBoolData.h
index c4eaad60..d35c014a 100644
--- a/obj/NiBoolData.h
+++ b/obj/NiBoolData.h
@@ -17,7 +17,7 @@ typedef Ref<NiBoolData> NiBoolDataRef;
  * NiBoolData - Timed boolean data.
  */
 
-class NiBoolData : public NI_BOOL_DATA_PARENT {
+class DLLEXPORT NiBoolData : public NI_BOOL_DATA_PARENT {
 public:
 	NiBoolData();
 	~NiBoolData();
diff --git a/obj/NiBoolInterpolator.h b/obj/NiBoolInterpolator.h
index 5aa74119..7e25b4fa 100644
--- a/obj/NiBoolInterpolator.h
+++ b/obj/NiBoolInterpolator.h
@@ -19,7 +19,7 @@ typedef Ref<NiBoolInterpolator> NiBoolInterpolatorRef;
  * NiBoolInterpolator - Unknown.
  */
 
-class NiBoolInterpolator : public NI_BOOL_INTERPOLATOR_PARENT {
+class DLLEXPORT NiBoolInterpolator : public NI_BOOL_INTERPOLATOR_PARENT {
 public:
 	NiBoolInterpolator();
 	~NiBoolInterpolator();
diff --git a/obj/NiBoolTimelineInterpolator.h b/obj/NiBoolTimelineInterpolator.h
index a600099f..2bd261ad 100644
--- a/obj/NiBoolTimelineInterpolator.h
+++ b/obj/NiBoolTimelineInterpolator.h
@@ -19,7 +19,7 @@ typedef Ref<NiBoolTimelineInterpolator> NiBoolTimelineInterpolatorRef;
  * NiBoolTimelineInterpolator - Unknown.
  */
 
-class NiBoolTimelineInterpolator : public NI_BOOL_TIMELINE_INTERPOLATOR_PARENT {
+class DLLEXPORT NiBoolTimelineInterpolator : public NI_BOOL_TIMELINE_INTERPOLATOR_PARENT {
 public:
 	NiBoolTimelineInterpolator();
 	~NiBoolTimelineInterpolator();
diff --git a/obj/NiBooleanExtraData.h b/obj/NiBooleanExtraData.h
index 4ede79d1..6d7dabcf 100644
--- a/obj/NiBooleanExtraData.h
+++ b/obj/NiBooleanExtraData.h
@@ -15,7 +15,7 @@ typedef Ref<NiBooleanExtraData> NiBooleanExtraDataRef;
  * NiBooleanExtraData - Boolean extra data.
  */
 
-class NiBooleanExtraData : public NI_BOOLEAN_EXTRA_DATA_PARENT {
+class DLLEXPORT NiBooleanExtraData : public NI_BOOLEAN_EXTRA_DATA_PARENT {
 public:
 	NiBooleanExtraData();
 	~NiBooleanExtraData();
diff --git a/obj/NiCamera.h b/obj/NiCamera.h
index f19eafd3..25cfc419 100644
--- a/obj/NiCamera.h
+++ b/obj/NiCamera.h
@@ -19,7 +19,7 @@ typedef Ref<NiCamera> NiCameraRef;
  * NiCamera - Camera object.
  */
 
-class NiCamera : public NI_CAMERA_PARENT {
+class DLLEXPORT NiCamera : public NI_CAMERA_PARENT {
 public:
 	NiCamera();
 	~NiCamera();
diff --git a/obj/NiCollisionData.h b/obj/NiCollisionData.h
index 5ea10d88..af2eb546 100644
--- a/obj/NiCollisionData.h
+++ b/obj/NiCollisionData.h
@@ -19,7 +19,7 @@ typedef Ref<NiCollisionData> NiCollisionDataRef;
  * NiCollisionData - Collision box.
  */
 
-class NiCollisionData : public NI_COLLISION_DATA_PARENT {
+class DLLEXPORT NiCollisionData : public NI_COLLISION_DATA_PARENT {
 public:
 	NiCollisionData();
 	~NiCollisionData();
diff --git a/obj/NiCollisionObject.h b/obj/NiCollisionObject.h
index 3866c025..6273fffe 100644
--- a/obj/NiCollisionObject.h
+++ b/obj/NiCollisionObject.h
@@ -20,7 +20,7 @@ typedef Ref<NiCollisionObject> NiCollisionObjectRef;
  * NiCollisionObject - Unknown.
  */
 
-class NiCollisionObject : public NI_COLLISION_OBJECT_PARENT {
+class DLLEXPORT NiCollisionObject : public NI_COLLISION_OBJECT_PARENT {
 public:
 	NiCollisionObject();
 	~NiCollisionObject();
diff --git a/obj/NiColorData.h b/obj/NiColorData.h
index cefd402b..e6581e6d 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 NiColorData : public NI_COLOR_DATA_PARENT {
+class DLLEXPORT NiColorData : public NI_COLOR_DATA_PARENT {
 public:
 	NiColorData();
 	~NiColorData();
diff --git a/obj/NiColorExtraData.h b/obj/NiColorExtraData.h
index 281cbc71..fc31b56f 100644
--- a/obj/NiColorExtraData.h
+++ b/obj/NiColorExtraData.h
@@ -15,7 +15,7 @@ typedef Ref<NiColorExtraData> NiColorExtraDataRef;
  * NiColorExtraData - Unknown.
  */
 
-class NiColorExtraData : public NI_COLOR_EXTRA_DATA_PARENT {
+class DLLEXPORT NiColorExtraData : public NI_COLOR_EXTRA_DATA_PARENT {
 public:
 	NiColorExtraData();
 	~NiColorExtraData();
diff --git a/obj/NiControllerManager.h b/obj/NiControllerManager.h
index 33e0255d..3d8c1421 100644
--- a/obj/NiControllerManager.h
+++ b/obj/NiControllerManager.h
@@ -20,7 +20,7 @@ typedef Ref<NiControllerManager> NiControllerManagerRef;
  * NiControllerManager - Unknown. Root of all controllers?
  */
 
-class NiControllerManager : public NI_CONTROLLER_MANAGER_PARENT {
+class DLLEXPORT NiControllerManager : public NI_CONTROLLER_MANAGER_PARENT {
 public:
 	NiControllerManager();
 	~NiControllerManager();
diff --git a/obj/NiControllerSequence.h b/obj/NiControllerSequence.h
index 60d09152..fea7d5b1 100644
--- a/obj/NiControllerSequence.h
+++ b/obj/NiControllerSequence.h
@@ -24,7 +24,7 @@ typedef Ref<NiControllerSequence> NiControllerSequenceRef;
  * up).
  */
 
-class NiControllerSequence : public NI_CONTROLLER_SEQUENCE_PARENT {
+class DLLEXPORT NiControllerSequence : public NI_CONTROLLER_SEQUENCE_PARENT {
 public:
 	NiControllerSequence();
 	~NiControllerSequence();
diff --git a/obj/NiDefaultAVObjectPalette.h b/obj/NiDefaultAVObjectPalette.h
index 3c8506da..5f9d1c8e 100644
--- a/obj/NiDefaultAVObjectPalette.h
+++ b/obj/NiDefaultAVObjectPalette.h
@@ -18,7 +18,7 @@ typedef Ref<NiDefaultAVObjectPalette> NiDefaultAVObjectPaletteRef;
  * by NiControllerManager.
  */
 
-class NiDefaultAVObjectPalette : public NI_DEFAULT_A_V_OBJECT_PALETTE_PARENT {
+class DLLEXPORT NiDefaultAVObjectPalette : public NI_DEFAULT_A_V_OBJECT_PALETTE_PARENT {
 public:
 	NiDefaultAVObjectPalette();
 	~NiDefaultAVObjectPalette();
diff --git a/obj/NiDirectionalLight.h b/obj/NiDirectionalLight.h
index 92a7059e..13097acf 100644
--- a/obj/NiDirectionalLight.h
+++ b/obj/NiDirectionalLight.h
@@ -15,7 +15,7 @@ typedef Ref<NiDirectionalLight> NiDirectionalLightRef;
  * NiDirectionalLight - Directional light source.
  */
 
-class NiDirectionalLight : public NI_DIRECTIONAL_LIGHT_PARENT {
+class DLLEXPORT NiDirectionalLight : public NI_DIRECTIONAL_LIGHT_PARENT {
 public:
 	NiDirectionalLight();
 	~NiDirectionalLight();
diff --git a/obj/NiDitherProperty.h b/obj/NiDitherProperty.h
index 2773671a..0f4e07a6 100644
--- a/obj/NiDitherProperty.h
+++ b/obj/NiDitherProperty.h
@@ -15,7 +15,7 @@ typedef Ref<NiDitherProperty> NiDitherPropertyRef;
  * NiDitherProperty - Unknown.
  */
 
-class NiDitherProperty : public NI_DITHER_PROPERTY_PARENT {
+class DLLEXPORT NiDitherProperty : public NI_DITHER_PROPERTY_PARENT {
 public:
 	NiDitherProperty();
 	~NiDitherProperty();
diff --git a/obj/NiDynamicEffect.h b/obj/NiDynamicEffect.h
index 1458028a..78478d42 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 NiDynamicEffect : public NI_DYNAMIC_EFFECT_PARENT {
+class DLLEXPORT NiDynamicEffect : public NI_DYNAMIC_EFFECT_PARENT {
 public:
 	NiDynamicEffect();
 	~NiDynamicEffect();
diff --git a/obj/NiExtraData.h b/obj/NiExtraData.h
index 9e42e5ab..6360019a 100644
--- a/obj/NiExtraData.h
+++ b/obj/NiExtraData.h
@@ -15,7 +15,7 @@ typedef Ref<NiExtraData> NiExtraDataRef;
  * NiExtraData - A generic extra data block.
  */
 
-class NiExtraData : public NI_EXTRA_DATA_PARENT {
+class DLLEXPORT NiExtraData : public NI_EXTRA_DATA_PARENT {
 public:
 	NiExtraData();
 	~NiExtraData();
diff --git a/obj/NiFlipController.h b/obj/NiFlipController.h
index 5363514a..1c1b2e4b 100644
--- a/obj/NiFlipController.h
+++ b/obj/NiFlipController.h
@@ -19,7 +19,7 @@ typedef Ref<NiFlipController> NiFlipControllerRef;
  * NiFlipController - Texture flipping controller.
  */
 
-class NiFlipController : public NI_FLIP_CONTROLLER_PARENT {
+class DLLEXPORT NiFlipController : public NI_FLIP_CONTROLLER_PARENT {
 public:
 	NiFlipController();
 	~NiFlipController();
diff --git a/obj/NiFloatData.h b/obj/NiFloatData.h
index 15d026a2..106944ca 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 NiFloatData : public NI_FLOAT_DATA_PARENT {
+class DLLEXPORT NiFloatData : public NI_FLOAT_DATA_PARENT {
 public:
 	NiFloatData();
 	~NiFloatData();
diff --git a/obj/NiFloatExtraData.h b/obj/NiFloatExtraData.h
index 26f6e0b5..b7b5e50f 100644
--- a/obj/NiFloatExtraData.h
+++ b/obj/NiFloatExtraData.h
@@ -15,7 +15,7 @@ typedef Ref<NiFloatExtraData> NiFloatExtraDataRef;
  * NiFloatExtraData - Float extra data.
  */
 
-class NiFloatExtraData : public NI_FLOAT_EXTRA_DATA_PARENT {
+class DLLEXPORT NiFloatExtraData : public NI_FLOAT_EXTRA_DATA_PARENT {
 public:
 	NiFloatExtraData();
 	~NiFloatExtraData();
diff --git a/obj/NiFloatExtraDataController.h b/obj/NiFloatExtraDataController.h
index bcaae022..049829f5 100644
--- a/obj/NiFloatExtraDataController.h
+++ b/obj/NiFloatExtraDataController.h
@@ -19,7 +19,7 @@ typedef Ref<NiFloatExtraDataController> NiFloatExtraDataControllerRef;
  * NiFloatExtraDataController - Unknown.
  */
 
-class NiFloatExtraDataController : public NI_FLOAT_EXTRA_DATA_CONTROLLER_PARENT {
+class DLLEXPORT NiFloatExtraDataController : public NI_FLOAT_EXTRA_DATA_CONTROLLER_PARENT {
 public:
 	NiFloatExtraDataController();
 	~NiFloatExtraDataController();
diff --git a/obj/NiFloatInterpolator.h b/obj/NiFloatInterpolator.h
index 6b46c63d..3661b711 100644
--- a/obj/NiFloatInterpolator.h
+++ b/obj/NiFloatInterpolator.h
@@ -19,7 +19,7 @@ typedef Ref<NiFloatInterpolator> NiFloatInterpolatorRef;
  * NiFloatInterpolator - Unknown.
  */
 
-class NiFloatInterpolator : public NI_FLOAT_INTERPOLATOR_PARENT {
+class DLLEXPORT NiFloatInterpolator : public NI_FLOAT_INTERPOLATOR_PARENT {
 public:
 	NiFloatInterpolator();
 	~NiFloatInterpolator();
diff --git a/obj/NiFloatsExtraData.h b/obj/NiFloatsExtraData.h
index 553a7d51..f465471b 100644
--- a/obj/NiFloatsExtraData.h
+++ b/obj/NiFloatsExtraData.h
@@ -15,7 +15,7 @@ typedef Ref<NiFloatsExtraData> NiFloatsExtraDataRef;
  * NiFloatsExtraData - Unknown.
  */
 
-class NiFloatsExtraData : public NI_FLOATS_EXTRA_DATA_PARENT {
+class DLLEXPORT NiFloatsExtraData : public NI_FLOATS_EXTRA_DATA_PARENT {
 public:
 	NiFloatsExtraData();
 	~NiFloatsExtraData();
diff --git a/obj/NiFogProperty.h b/obj/NiFogProperty.h
index da6b1ef8..c31d48ed 100644
--- a/obj/NiFogProperty.h
+++ b/obj/NiFogProperty.h
@@ -15,7 +15,7 @@ typedef Ref<NiFogProperty> NiFogPropertyRef;
  * NiFogProperty - Describes... fog?
  */
 
-class NiFogProperty : public NI_FOG_PROPERTY_PARENT {
+class DLLEXPORT NiFogProperty : public NI_FOG_PROPERTY_PARENT {
 public:
 	NiFogProperty();
 	~NiFogProperty();
diff --git a/obj/NiGeomMorpherController.h b/obj/NiGeomMorpherController.h
index df1f823f..c2e84fbf 100644
--- a/obj/NiGeomMorpherController.h
+++ b/obj/NiGeomMorpherController.h
@@ -20,7 +20,7 @@ typedef Ref<NiGeomMorpherController> NiGeomMorpherControllerRef;
  * NiGeomMorpherController - Time controller for geometry morphing.
  */
 
-class NiGeomMorpherController : public NI_GEOM_MORPHER_CONTROLLER_PARENT {
+class DLLEXPORT NiGeomMorpherController : public NI_GEOM_MORPHER_CONTROLLER_PARENT {
 public:
 	NiGeomMorpherController();
 	~NiGeomMorpherController();
diff --git a/obj/NiGravity.h b/obj/NiGravity.h
index d4ea6547..ac558df0 100644
--- a/obj/NiGravity.h
+++ b/obj/NiGravity.h
@@ -16,7 +16,7 @@ typedef Ref<NiGravity> NiGravityRef;
  * particles.
  */
 
-class NiGravity : public NI_GRAVITY_PARENT {
+class DLLEXPORT NiGravity : public NI_GRAVITY_PARENT {
 public:
 	NiGravity();
 	~NiGravity();
diff --git a/obj/NiIntegerExtraData.h b/obj/NiIntegerExtraData.h
index c1d49dec..33712c92 100644
--- a/obj/NiIntegerExtraData.h
+++ b/obj/NiIntegerExtraData.h
@@ -15,7 +15,7 @@ typedef Ref<NiIntegerExtraData> NiIntegerExtraDataRef;
  * NiIntegerExtraData - Extra integer data.
  */
 
-class NiIntegerExtraData : public NI_INTEGER_EXTRA_DATA_PARENT {
+class DLLEXPORT NiIntegerExtraData : public NI_INTEGER_EXTRA_DATA_PARENT {
 public:
 	NiIntegerExtraData();
 	~NiIntegerExtraData();
diff --git a/obj/NiIntegersExtraData.h b/obj/NiIntegersExtraData.h
index b24868dd..b5d95a97 100644
--- a/obj/NiIntegersExtraData.h
+++ b/obj/NiIntegersExtraData.h
@@ -15,7 +15,7 @@ typedef Ref<NiIntegersExtraData> NiIntegersExtraDataRef;
  * NiIntegersExtraData - Integers data.
  */
 
-class NiIntegersExtraData : public NI_INTEGERS_EXTRA_DATA_PARENT {
+class DLLEXPORT NiIntegersExtraData : public NI_INTEGERS_EXTRA_DATA_PARENT {
 public:
 	NiIntegersExtraData();
 	~NiIntegersExtraData();
diff --git a/obj/NiInterpolator.h b/obj/NiInterpolator.h
index 1293595f..f8b37131 100644
--- a/obj/NiInterpolator.h
+++ b/obj/NiInterpolator.h
@@ -15,7 +15,7 @@ typedef Ref<NiInterpolator> NiInterpolatorRef;
  * NiInterpolator - Interpolator blocks - function unknown.
  */
 
-class NiInterpolator : public NI_INTERPOLATOR_PARENT {
+class DLLEXPORT NiInterpolator : public NI_INTERPOLATOR_PARENT {
 public:
 	NiInterpolator();
 	~NiInterpolator();
diff --git a/obj/NiKeyframeController.h b/obj/NiKeyframeController.h
index da2238a6..1a9e19c1 100644
--- a/obj/NiKeyframeController.h
+++ b/obj/NiKeyframeController.h
@@ -20,7 +20,7 @@ typedef Ref<NiKeyframeController> NiKeyframeControllerRef;
  * frames.
  */
 
-class NiKeyframeController : public NI_KEYFRAME_CONTROLLER_PARENT {
+class DLLEXPORT NiKeyframeController : public NI_KEYFRAME_CONTROLLER_PARENT {
 public:
 	NiKeyframeController();
 	~NiKeyframeController();
diff --git a/obj/NiKeyframeData.h b/obj/NiKeyframeData.h
index 08768d79..a0c24436 100644
--- a/obj/NiKeyframeData.h
+++ b/obj/NiKeyframeData.h
@@ -17,7 +17,7 @@ typedef Ref<NiKeyframeData> NiKeyframeDataRef;
  * NiKeyframeData - Keyframes for mesh animation.
  */
 
-class NiKeyframeData : public NI_KEYFRAME_DATA_PARENT {
+class DLLEXPORT NiKeyframeData : public NI_KEYFRAME_DATA_PARENT {
 public:
 	NiKeyframeData();
 	~NiKeyframeData();
diff --git a/obj/NiLODNode.h b/obj/NiLODNode.h
index 5d3a3b37..3a4b75b2 100644
--- a/obj/NiLODNode.h
+++ b/obj/NiLODNode.h
@@ -23,7 +23,7 @@ typedef Ref<NiLODNode> NiLODNodeRef;
  * distance.
  */
 
-class NiLODNode : public NI_L_O_D_NODE_PARENT {
+class DLLEXPORT NiLODNode : public NI_L_O_D_NODE_PARENT {
 public:
 	NiLODNode();
 	~NiLODNode();
diff --git a/obj/NiLight.h b/obj/NiLight.h
index bdbaee95..c2b5d0bf 100644
--- a/obj/NiLight.h
+++ b/obj/NiLight.h
@@ -15,7 +15,7 @@ typedef Ref<NiLight> NiLightRef;
  * NiLight - Light source.
  */
 
-class NiLight : public NI_LIGHT_PARENT {
+class DLLEXPORT NiLight : public NI_LIGHT_PARENT {
 public:
 	NiLight();
 	~NiLight();
diff --git a/obj/NiLightColorController.h b/obj/NiLightColorController.h
index f6769b1a..46065e56 100644
--- a/obj/NiLightColorController.h
+++ b/obj/NiLightColorController.h
@@ -20,7 +20,7 @@ typedef Ref<NiLightColorController> NiLightColorControllerRef;
  * NiLightColorController - Light color animation controller.
  */
 
-class NiLightColorController : public NI_LIGHT_COLOR_CONTROLLER_PARENT {
+class DLLEXPORT NiLightColorController : public NI_LIGHT_COLOR_CONTROLLER_PARENT {
 public:
 	NiLightColorController();
 	~NiLightColorController();
diff --git a/obj/NiLightDimmerController.h b/obj/NiLightDimmerController.h
index fed240bd..e7c5c66e 100644
--- a/obj/NiLightDimmerController.h
+++ b/obj/NiLightDimmerController.h
@@ -19,7 +19,7 @@ typedef Ref<NiLightDimmerController> NiLightDimmerControllerRef;
  * NiLightDimmerController - Unknown controller.
  */
 
-class NiLightDimmerController : public NI_LIGHT_DIMMER_CONTROLLER_PARENT {
+class DLLEXPORT NiLightDimmerController : public NI_LIGHT_DIMMER_CONTROLLER_PARENT {
 public:
 	NiLightDimmerController();
 	~NiLightDimmerController();
diff --git a/obj/NiLookAtController.h b/obj/NiLookAtController.h
index 93f03834..335d811f 100644
--- a/obj/NiLookAtController.h
+++ b/obj/NiLookAtController.h
@@ -20,7 +20,7 @@ typedef Ref<NiLookAtController> NiLookAtControllerRef;
  * -3.4e+38.
  */
 
-class NiLookAtController : public NI_LOOK_AT_CONTROLLER_PARENT {
+class DLLEXPORT NiLookAtController : public NI_LOOK_AT_CONTROLLER_PARENT {
 public:
 	NiLookAtController();
 	~NiLookAtController();
diff --git a/obj/NiLookAtInterpolator.h b/obj/NiLookAtInterpolator.h
index a8a04a48..24f45cf4 100644
--- a/obj/NiLookAtInterpolator.h
+++ b/obj/NiLookAtInterpolator.h
@@ -21,7 +21,7 @@ typedef Ref<NiLookAtInterpolator> NiLookAtInterpolatorRef;
  * NiLookAtInterpolator - Unknown.
  */
 
-class NiLookAtInterpolator : public NI_LOOK_AT_INTERPOLATOR_PARENT {
+class DLLEXPORT NiLookAtInterpolator : public NI_LOOK_AT_INTERPOLATOR_PARENT {
 public:
 	NiLookAtInterpolator();
 	~NiLookAtInterpolator();
diff --git a/obj/NiMaterialColorController.h b/obj/NiMaterialColorController.h
index ebc7b34d..8b512704 100644
--- a/obj/NiMaterialColorController.h
+++ b/obj/NiMaterialColorController.h
@@ -19,7 +19,7 @@ typedef Ref<NiMaterialColorController> NiMaterialColorControllerRef;
  * NiMaterialColorController - Time controller for material color.
  */
 
-class NiMaterialColorController : public NI_MATERIAL_COLOR_CONTROLLER_PARENT {
+class DLLEXPORT NiMaterialColorController : public NI_MATERIAL_COLOR_CONTROLLER_PARENT {
 public:
 	NiMaterialColorController();
 	~NiMaterialColorController();
diff --git a/obj/NiMaterialProperty.h b/obj/NiMaterialProperty.h
index 90a381f2..45e8a28c 100644
--- a/obj/NiMaterialProperty.h
+++ b/obj/NiMaterialProperty.h
@@ -15,7 +15,7 @@ typedef Ref<NiMaterialProperty> NiMaterialPropertyRef;
  * NiMaterialProperty - Describes the material shading properties.
  */
 
-class NiMaterialProperty : public NI_MATERIAL_PROPERTY_PARENT {
+class DLLEXPORT NiMaterialProperty : public NI_MATERIAL_PROPERTY_PARENT {
 public:
 	NiMaterialProperty();
 	~NiMaterialProperty();
diff --git a/obj/NiMeshPSysData.h b/obj/NiMeshPSysData.h
index 80561218..37ad6f6f 100644
--- a/obj/NiMeshPSysData.h
+++ b/obj/NiMeshPSysData.h
@@ -20,7 +20,7 @@ typedef Ref<NiMeshPSysData> NiMeshPSysDataRef;
  * NiMeshPSysData - Particle meshes data.
  */
 
-class NiMeshPSysData : public NI_MESH_P_SYS_DATA_PARENT {
+class DLLEXPORT NiMeshPSysData : public NI_MESH_P_SYS_DATA_PARENT {
 public:
 	NiMeshPSysData();
 	~NiMeshPSysData();
diff --git a/obj/NiMeshParticleSystem.h b/obj/NiMeshParticleSystem.h
index c79ebd0e..ac30c2bd 100644
--- a/obj/NiMeshParticleSystem.h
+++ b/obj/NiMeshParticleSystem.h
@@ -15,7 +15,7 @@ typedef Ref<NiMeshParticleSystem> NiMeshParticleSystemRef;
  * NiMeshParticleSystem - Particle system.
  */
 
-class NiMeshParticleSystem : public NI_MESH_PARTICLE_SYSTEM_PARENT {
+class DLLEXPORT NiMeshParticleSystem : public NI_MESH_PARTICLE_SYSTEM_PARENT {
 public:
 	NiMeshParticleSystem();
 	~NiMeshParticleSystem();
diff --git a/obj/NiMorphData.h b/obj/NiMorphData.h
index d10382f3..31c2687d 100644
--- a/obj/NiMorphData.h
+++ b/obj/NiMorphData.h
@@ -17,7 +17,7 @@ typedef Ref<NiMorphData> NiMorphDataRef;
  * NiMorphData - Geometry morphing data.
  */
 
-class NiMorphData : public NI_MORPH_DATA_PARENT {
+class DLLEXPORT NiMorphData : public NI_MORPH_DATA_PARENT {
 public:
 	NiMorphData();
 	~NiMorphData();
diff --git a/obj/NiMultiTargetTransformController.h b/obj/NiMultiTargetTransformController.h
index d1bb94a9..4faeadc8 100644
--- a/obj/NiMultiTargetTransformController.h
+++ b/obj/NiMultiTargetTransformController.h
@@ -19,7 +19,7 @@ typedef Ref<NiMultiTargetTransformController> NiMultiTargetTransformControllerRe
  * NiMultiTargetTransformController - Unknown.
  */
 
-class NiMultiTargetTransformController : public NI_MULTI_TARGET_TRANSFORM_CONTROLLER_PARENT {
+class DLLEXPORT NiMultiTargetTransformController : public NI_MULTI_TARGET_TRANSFORM_CONTROLLER_PARENT {
 public:
 	NiMultiTargetTransformController();
 	~NiMultiTargetTransformController();
diff --git a/obj/NiNode.h b/obj/NiNode.h
index 7fee411f..afddc44a 100644
--- a/obj/NiNode.h
+++ b/obj/NiNode.h
@@ -21,7 +21,7 @@ typedef Ref<NiNode> NiNodeRef;
  * NiNode - Generic node block for grouping.
  */
 
-class NiNode : public NI_NODE_PARENT {
+class DLLEXPORT NiNode : public NI_NODE_PARENT {
 public:
 	NiNode();
 	~NiNode();
diff --git a/obj/NiObject.h b/obj/NiObject.h
index 72d50ecc..2e51630c 100644
--- a/obj/NiObject.h
+++ b/obj/NiObject.h
@@ -30,7 +30,7 @@ typedef Ref<NiObject> NiObjectRef;
 typedef Ref<NiObject> blk_ref; //Temporary to make old code compile
 typedef NiObject IBlock;
 
-class NiObject {
+class DLLEXPORT NiObject {
 public:
 	NiObject();
 	virtual ~NiObject();
diff --git a/obj/NiObjectNET.h b/obj/NiObjectNET.h
index cfd13e2a..7264f553 100644
--- a/obj/NiObjectNET.h
+++ b/obj/NiObjectNET.h
@@ -20,7 +20,7 @@ class NiTimeController;
  */
 typedef Ref<NiObjectNET> NiObjectNETRef;
 
-class NiObjectNET : public NI_OBJECT_N_E_T_PARENT {
+class DLLEXPORT NiObjectNET : public NI_OBJECT_N_E_T_PARENT {
 public:
 	NiObjectNET();
 	~NiObjectNET();
diff --git a/obj/NiPSysAgeDeathModifier.h b/obj/NiPSysAgeDeathModifier.h
index e3a58044..3791c990 100644
--- a/obj/NiPSysAgeDeathModifier.h
+++ b/obj/NiPSysAgeDeathModifier.h
@@ -19,7 +19,7 @@ typedef Ref<NiPSysAgeDeathModifier> NiPSysAgeDeathModifierRef;
  * NiPSysAgeDeathModifier - Unknown particle modifier.
  */
 
-class NiPSysAgeDeathModifier : public NI_P_SYS_AGE_DEATH_MODIFIER_PARENT {
+class DLLEXPORT NiPSysAgeDeathModifier : public NI_P_SYS_AGE_DEATH_MODIFIER_PARENT {
 public:
 	NiPSysAgeDeathModifier();
 	~NiPSysAgeDeathModifier();
diff --git a/obj/NiPSysBombModifier.h b/obj/NiPSysBombModifier.h
index 4377d1e5..46535427 100644
--- a/obj/NiPSysBombModifier.h
+++ b/obj/NiPSysBombModifier.h
@@ -19,7 +19,7 @@ typedef Ref<NiPSysBombModifier> NiPSysBombModifierRef;
  * NiPSysBombModifier - Unknown.
  */
 
-class NiPSysBombModifier : public NI_P_SYS_BOMB_MODIFIER_PARENT {
+class DLLEXPORT NiPSysBombModifier : public NI_P_SYS_BOMB_MODIFIER_PARENT {
 public:
 	NiPSysBombModifier();
 	~NiPSysBombModifier();
diff --git a/obj/NiPSysBoundUpdateModifier.h b/obj/NiPSysBoundUpdateModifier.h
index 859e6edd..306a940f 100644
--- a/obj/NiPSysBoundUpdateModifier.h
+++ b/obj/NiPSysBoundUpdateModifier.h
@@ -15,7 +15,7 @@ typedef Ref<NiPSysBoundUpdateModifier> NiPSysBoundUpdateModifierRef;
  * NiPSysBoundUpdateModifier - Unknown particle system modifier.
  */
 
-class NiPSysBoundUpdateModifier : public NI_P_SYS_BOUND_UPDATE_MODIFIER_PARENT {
+class DLLEXPORT NiPSysBoundUpdateModifier : public NI_P_SYS_BOUND_UPDATE_MODIFIER_PARENT {
 public:
 	NiPSysBoundUpdateModifier();
 	~NiPSysBoundUpdateModifier();
diff --git a/obj/NiPSysBoxEmitter.h b/obj/NiPSysBoxEmitter.h
index 4cd8c762..a9482186 100644
--- a/obj/NiPSysBoxEmitter.h
+++ b/obj/NiPSysBoxEmitter.h
@@ -15,7 +15,7 @@ typedef Ref<NiPSysBoxEmitter> NiPSysBoxEmitterRef;
  * NiPSysBoxEmitter - Unknown particle modifier.
  */
 
-class NiPSysBoxEmitter : public NI_P_SYS_BOX_EMITTER_PARENT {
+class DLLEXPORT NiPSysBoxEmitter : public NI_P_SYS_BOX_EMITTER_PARENT {
 public:
 	NiPSysBoxEmitter();
 	~NiPSysBoxEmitter();
diff --git a/obj/NiPSysColliderManager.h b/obj/NiPSysColliderManager.h
index d9c7c0b6..31408aa0 100644
--- a/obj/NiPSysColliderManager.h
+++ b/obj/NiPSysColliderManager.h
@@ -19,7 +19,7 @@ typedef Ref<NiPSysColliderManager> NiPSysColliderManagerRef;
  * NiPSysColliderManager - Unknown.
  */
 
-class NiPSysColliderManager : public NI_P_SYS_COLLIDER_MANAGER_PARENT {
+class DLLEXPORT NiPSysColliderManager : public NI_P_SYS_COLLIDER_MANAGER_PARENT {
 public:
 	NiPSysColliderManager();
 	~NiPSysColliderManager();
diff --git a/obj/NiPSysColorModifier.h b/obj/NiPSysColorModifier.h
index 8b571b6a..9240f877 100644
--- a/obj/NiPSysColorModifier.h
+++ b/obj/NiPSysColorModifier.h
@@ -19,7 +19,7 @@ typedef Ref<NiPSysColorModifier> NiPSysColorModifierRef;
  * NiPSysColorModifier - Unknown particle modifier.
  */
 
-class NiPSysColorModifier : public NI_P_SYS_COLOR_MODIFIER_PARENT {
+class DLLEXPORT NiPSysColorModifier : public NI_P_SYS_COLOR_MODIFIER_PARENT {
 public:
 	NiPSysColorModifier();
 	~NiPSysColorModifier();
diff --git a/obj/NiPSysCylinderEmitter.h b/obj/NiPSysCylinderEmitter.h
index 5db148a8..48de90a9 100644
--- a/obj/NiPSysCylinderEmitter.h
+++ b/obj/NiPSysCylinderEmitter.h
@@ -15,7 +15,7 @@ typedef Ref<NiPSysCylinderEmitter> NiPSysCylinderEmitterRef;
  * NiPSysCylinderEmitter - Unknown.
  */
 
-class NiPSysCylinderEmitter : public NI_P_SYS_CYLINDER_EMITTER_PARENT {
+class DLLEXPORT NiPSysCylinderEmitter : public NI_P_SYS_CYLINDER_EMITTER_PARENT {
 public:
 	NiPSysCylinderEmitter();
 	~NiPSysCylinderEmitter();
diff --git a/obj/NiPSysData.h b/obj/NiPSysData.h
index 7dc0a9b9..4f897897 100644
--- a/obj/NiPSysData.h
+++ b/obj/NiPSysData.h
@@ -15,7 +15,7 @@ typedef Ref<NiPSysData> NiPSysDataRef;
  * NiPSysData - Particle system data.
  */
 
-class NiPSysData : public NI_P_SYS_DATA_PARENT {
+class DLLEXPORT NiPSysData : public NI_P_SYS_DATA_PARENT {
 public:
 	NiPSysData();
 	~NiPSysData();
diff --git a/obj/NiPSysDragModifier.h b/obj/NiPSysDragModifier.h
index ac2b989f..c2aefd12 100644
--- a/obj/NiPSysDragModifier.h
+++ b/obj/NiPSysDragModifier.h
@@ -19,7 +19,7 @@ typedef Ref<NiPSysDragModifier> NiPSysDragModifierRef;
  * NiPSysDragModifier - Unknown.
  */
 
-class NiPSysDragModifier : public NI_P_SYS_DRAG_MODIFIER_PARENT {
+class DLLEXPORT NiPSysDragModifier : public NI_P_SYS_DRAG_MODIFIER_PARENT {
 public:
 	NiPSysDragModifier();
 	~NiPSysDragModifier();
diff --git a/obj/NiPSysEmitter.h b/obj/NiPSysEmitter.h
index 09e9b752..d51c7cd8 100644
--- a/obj/NiPSysEmitter.h
+++ b/obj/NiPSysEmitter.h
@@ -15,7 +15,7 @@ typedef Ref<NiPSysEmitter> NiPSysEmitterRef;
  * NiPSysEmitter - A particle emitter modifier?
  */
 
-class NiPSysEmitter : public NI_P_SYS_EMITTER_PARENT {
+class DLLEXPORT NiPSysEmitter : public NI_P_SYS_EMITTER_PARENT {
 public:
 	NiPSysEmitter();
 	~NiPSysEmitter();
diff --git a/obj/NiPSysEmitterCtlr.h b/obj/NiPSysEmitterCtlr.h
index d805181a..b3e43a71 100644
--- a/obj/NiPSysEmitterCtlr.h
+++ b/obj/NiPSysEmitterCtlr.h
@@ -19,7 +19,7 @@ typedef Ref<NiPSysEmitterCtlr> NiPSysEmitterCtlrRef;
  * NiPSysEmitterCtlr - Particle system emitter controller.
  */
 
-class NiPSysEmitterCtlr : public NI_P_SYS_EMITTER_CTLR_PARENT {
+class DLLEXPORT NiPSysEmitterCtlr : public NI_P_SYS_EMITTER_CTLR_PARENT {
 public:
 	NiPSysEmitterCtlr();
 	~NiPSysEmitterCtlr();
diff --git a/obj/NiPSysEmitterCtlrData.h b/obj/NiPSysEmitterCtlrData.h
index 7376f58b..1f7f54e8 100644
--- a/obj/NiPSysEmitterCtlrData.h
+++ b/obj/NiPSysEmitterCtlrData.h
@@ -17,7 +17,7 @@ typedef Ref<NiPSysEmitterCtlrData> NiPSysEmitterCtlrDataRef;
  * NiPSysEmitterCtlrData - Particle system emitter controller data.
  */
 
-class NiPSysEmitterCtlrData : public NI_P_SYS_EMITTER_CTLR_DATA_PARENT {
+class DLLEXPORT NiPSysEmitterCtlrData : public NI_P_SYS_EMITTER_CTLR_DATA_PARENT {
 public:
 	NiPSysEmitterCtlrData();
 	~NiPSysEmitterCtlrData();
diff --git a/obj/NiPSysEmitterDeclinationCtlr.h b/obj/NiPSysEmitterDeclinationCtlr.h
index 37624c46..b62051a8 100644
--- a/obj/NiPSysEmitterDeclinationCtlr.h
+++ b/obj/NiPSysEmitterDeclinationCtlr.h
@@ -15,7 +15,7 @@ typedef Ref<NiPSysEmitterDeclinationCtlr> NiPSysEmitterDeclinationCtlrRef;
  * NiPSysEmitterDeclinationCtlr - Unknown.
  */
 
-class NiPSysEmitterDeclinationCtlr : public NI_P_SYS_EMITTER_DECLINATION_CTLR_PARENT {
+class DLLEXPORT NiPSysEmitterDeclinationCtlr : public NI_P_SYS_EMITTER_DECLINATION_CTLR_PARENT {
 public:
 	NiPSysEmitterDeclinationCtlr();
 	~NiPSysEmitterDeclinationCtlr();
diff --git a/obj/NiPSysEmitterDeclinationVarCtlr.h b/obj/NiPSysEmitterDeclinationVarCtlr.h
index 60e1b094..bdb739e4 100644
--- a/obj/NiPSysEmitterDeclinationVarCtlr.h
+++ b/obj/NiPSysEmitterDeclinationVarCtlr.h
@@ -15,7 +15,7 @@ typedef Ref<NiPSysEmitterDeclinationVarCtlr> NiPSysEmitterDeclinationVarCtlrRef;
  * NiPSysEmitterDeclinationVarCtlr - Unknown.
  */
 
-class NiPSysEmitterDeclinationVarCtlr : public NI_P_SYS_EMITTER_DECLINATION_VAR_CTLR_PARENT {
+class DLLEXPORT NiPSysEmitterDeclinationVarCtlr : public NI_P_SYS_EMITTER_DECLINATION_VAR_CTLR_PARENT {
 public:
 	NiPSysEmitterDeclinationVarCtlr();
 	~NiPSysEmitterDeclinationVarCtlr();
diff --git a/obj/NiPSysEmitterInitialRadiusCtlr.h b/obj/NiPSysEmitterInitialRadiusCtlr.h
index 8910ad2f..1c635725 100644
--- a/obj/NiPSysEmitterInitialRadiusCtlr.h
+++ b/obj/NiPSysEmitterInitialRadiusCtlr.h
@@ -15,7 +15,7 @@ typedef Ref<NiPSysEmitterInitialRadiusCtlr> NiPSysEmitterInitialRadiusCtlrRef;
  * NiPSysEmitterInitialRadiusCtlr - Unknown.
  */
 
-class NiPSysEmitterInitialRadiusCtlr : public NI_P_SYS_EMITTER_INITIAL_RADIUS_CTLR_PARENT {
+class DLLEXPORT NiPSysEmitterInitialRadiusCtlr : public NI_P_SYS_EMITTER_INITIAL_RADIUS_CTLR_PARENT {
 public:
 	NiPSysEmitterInitialRadiusCtlr();
 	~NiPSysEmitterInitialRadiusCtlr();
diff --git a/obj/NiPSysEmitterLifeSpanCtlr.h b/obj/NiPSysEmitterLifeSpanCtlr.h
index c9135755..41e2376e 100644
--- a/obj/NiPSysEmitterLifeSpanCtlr.h
+++ b/obj/NiPSysEmitterLifeSpanCtlr.h
@@ -15,7 +15,7 @@ typedef Ref<NiPSysEmitterLifeSpanCtlr> NiPSysEmitterLifeSpanCtlrRef;
  * NiPSysEmitterLifeSpanCtlr - Unknown.
  */
 
-class NiPSysEmitterLifeSpanCtlr : public NI_P_SYS_EMITTER_LIFE_SPAN_CTLR_PARENT {
+class DLLEXPORT NiPSysEmitterLifeSpanCtlr : public NI_P_SYS_EMITTER_LIFE_SPAN_CTLR_PARENT {
 public:
 	NiPSysEmitterLifeSpanCtlr();
 	~NiPSysEmitterLifeSpanCtlr();
diff --git a/obj/NiPSysEmitterSpeedCtlr.h b/obj/NiPSysEmitterSpeedCtlr.h
index 1476eda2..a3eb6cae 100644
--- a/obj/NiPSysEmitterSpeedCtlr.h
+++ b/obj/NiPSysEmitterSpeedCtlr.h
@@ -15,7 +15,7 @@ typedef Ref<NiPSysEmitterSpeedCtlr> NiPSysEmitterSpeedCtlrRef;
  * NiPSysEmitterSpeedCtlr - Unknown.
  */
 
-class NiPSysEmitterSpeedCtlr : public NI_P_SYS_EMITTER_SPEED_CTLR_PARENT {
+class DLLEXPORT NiPSysEmitterSpeedCtlr : public NI_P_SYS_EMITTER_SPEED_CTLR_PARENT {
 public:
 	NiPSysEmitterSpeedCtlr();
 	~NiPSysEmitterSpeedCtlr();
diff --git a/obj/NiPSysGravityModifier.h b/obj/NiPSysGravityModifier.h
index 8135cd81..54bcbbe5 100644
--- a/obj/NiPSysGravityModifier.h
+++ b/obj/NiPSysGravityModifier.h
@@ -19,7 +19,7 @@ typedef Ref<NiPSysGravityModifier> NiPSysGravityModifierRef;
  * NiPSysGravityModifier - Unknown particle system modifier.
  */
 
-class NiPSysGravityModifier : public NI_P_SYS_GRAVITY_MODIFIER_PARENT {
+class DLLEXPORT NiPSysGravityModifier : public NI_P_SYS_GRAVITY_MODIFIER_PARENT {
 public:
 	NiPSysGravityModifier();
 	~NiPSysGravityModifier();
diff --git a/obj/NiPSysGravityStrengthCtlr.h b/obj/NiPSysGravityStrengthCtlr.h
index ce18fff7..3a8ef9f1 100644
--- a/obj/NiPSysGravityStrengthCtlr.h
+++ b/obj/NiPSysGravityStrengthCtlr.h
@@ -15,7 +15,7 @@ typedef Ref<NiPSysGravityStrengthCtlr> NiPSysGravityStrengthCtlrRef;
  * NiPSysGravityStrengthCtlr - Unknown.
  */
 
-class NiPSysGravityStrengthCtlr : public NI_P_SYS_GRAVITY_STRENGTH_CTLR_PARENT {
+class DLLEXPORT NiPSysGravityStrengthCtlr : public NI_P_SYS_GRAVITY_STRENGTH_CTLR_PARENT {
 public:
 	NiPSysGravityStrengthCtlr();
 	~NiPSysGravityStrengthCtlr();
diff --git a/obj/NiPSysGrowFadeModifier.h b/obj/NiPSysGrowFadeModifier.h
index a087d00d..b0a05823 100644
--- a/obj/NiPSysGrowFadeModifier.h
+++ b/obj/NiPSysGrowFadeModifier.h
@@ -15,7 +15,7 @@ typedef Ref<NiPSysGrowFadeModifier> NiPSysGrowFadeModifierRef;
  * NiPSysGrowFadeModifier - Unknown particle system modifier.
  */
 
-class NiPSysGrowFadeModifier : public NI_P_SYS_GROW_FADE_MODIFIER_PARENT {
+class DLLEXPORT NiPSysGrowFadeModifier : public NI_P_SYS_GROW_FADE_MODIFIER_PARENT {
 public:
 	NiPSysGrowFadeModifier();
 	~NiPSysGrowFadeModifier();
diff --git a/obj/NiPSysMeshEmitter.h b/obj/NiPSysMeshEmitter.h
index fbe7db58..829818bb 100644
--- a/obj/NiPSysMeshEmitter.h
+++ b/obj/NiPSysMeshEmitter.h
@@ -19,7 +19,7 @@ typedef Ref<NiPSysMeshEmitter> NiPSysMeshEmitterRef;
  * NiPSysMeshEmitter - Unknown.
  */
 
-class NiPSysMeshEmitter : public NI_P_SYS_MESH_EMITTER_PARENT {
+class DLLEXPORT NiPSysMeshEmitter : public NI_P_SYS_MESH_EMITTER_PARENT {
 public:
 	NiPSysMeshEmitter();
 	~NiPSysMeshEmitter();
diff --git a/obj/NiPSysMeshUpdateModifier.h b/obj/NiPSysMeshUpdateModifier.h
index 32020298..53a9f1c5 100644
--- a/obj/NiPSysMeshUpdateModifier.h
+++ b/obj/NiPSysMeshUpdateModifier.h
@@ -19,7 +19,7 @@ typedef Ref<NiPSysMeshUpdateModifier> NiPSysMeshUpdateModifierRef;
  * NiPSysMeshUpdateModifier - Unknown.
  */
 
-class NiPSysMeshUpdateModifier : public NI_P_SYS_MESH_UPDATE_MODIFIER_PARENT {
+class DLLEXPORT NiPSysMeshUpdateModifier : public NI_P_SYS_MESH_UPDATE_MODIFIER_PARENT {
 public:
 	NiPSysMeshUpdateModifier();
 	~NiPSysMeshUpdateModifier();
diff --git a/obj/NiPSysModifier.h b/obj/NiPSysModifier.h
index 10e7d507..73a3999c 100644
--- a/obj/NiPSysModifier.h
+++ b/obj/NiPSysModifier.h
@@ -19,7 +19,7 @@ typedef Ref<NiPSysModifier> NiPSysModifierRef;
  * NiPSysModifier - Generic particle system modifier block.
  */
 
-class NiPSysModifier : public NI_P_SYS_MODIFIER_PARENT {
+class DLLEXPORT NiPSysModifier : public NI_P_SYS_MODIFIER_PARENT {
 public:
 	NiPSysModifier();
 	~NiPSysModifier();
diff --git a/obj/NiPSysModifierActiveCtlr.h b/obj/NiPSysModifierActiveCtlr.h
index 3c4a56b1..4806cff1 100644
--- a/obj/NiPSysModifierActiveCtlr.h
+++ b/obj/NiPSysModifierActiveCtlr.h
@@ -15,7 +15,7 @@ typedef Ref<NiPSysModifierActiveCtlr> NiPSysModifierActiveCtlrRef;
  * NiPSysModifierActiveCtlr - Unknown.
  */
 
-class NiPSysModifierActiveCtlr : public NI_P_SYS_MODIFIER_ACTIVE_CTLR_PARENT {
+class DLLEXPORT NiPSysModifierActiveCtlr : public NI_P_SYS_MODIFIER_ACTIVE_CTLR_PARENT {
 public:
 	NiPSysModifierActiveCtlr();
 	~NiPSysModifierActiveCtlr();
diff --git a/obj/NiPSysPlanarCollider.h b/obj/NiPSysPlanarCollider.h
index 6dab1d5f..bba91b73 100644
--- a/obj/NiPSysPlanarCollider.h
+++ b/obj/NiPSysPlanarCollider.h
@@ -21,7 +21,7 @@ typedef Ref<NiPSysPlanarCollider> NiPSysPlanarColliderRef;
  * NiPSysPlanarCollider - Unknown.
  */
 
-class NiPSysPlanarCollider : public NI_P_SYS_PLANAR_COLLIDER_PARENT {
+class DLLEXPORT NiPSysPlanarCollider : public NI_P_SYS_PLANAR_COLLIDER_PARENT {
 public:
 	NiPSysPlanarCollider();
 	~NiPSysPlanarCollider();
diff --git a/obj/NiPSysPositionModifier.h b/obj/NiPSysPositionModifier.h
index 2135ad01..605b14e6 100644
--- a/obj/NiPSysPositionModifier.h
+++ b/obj/NiPSysPositionModifier.h
@@ -15,7 +15,7 @@ typedef Ref<NiPSysPositionModifier> NiPSysPositionModifierRef;
  * NiPSysPositionModifier - Unknown particle system modifier.
  */
 
-class NiPSysPositionModifier : public NI_P_SYS_POSITION_MODIFIER_PARENT {
+class DLLEXPORT NiPSysPositionModifier : public NI_P_SYS_POSITION_MODIFIER_PARENT {
 public:
 	NiPSysPositionModifier();
 	~NiPSysPositionModifier();
diff --git a/obj/NiPSysResetOnLoopCtlr.h b/obj/NiPSysResetOnLoopCtlr.h
index b461a2a9..b77e85fc 100644
--- a/obj/NiPSysResetOnLoopCtlr.h
+++ b/obj/NiPSysResetOnLoopCtlr.h
@@ -15,7 +15,7 @@ typedef Ref<NiPSysResetOnLoopCtlr> NiPSysResetOnLoopCtlrRef;
  * NiPSysResetOnLoopCtlr - Unknown.
  */
 
-class NiPSysResetOnLoopCtlr : public NI_P_SYS_RESET_ON_LOOP_CTLR_PARENT {
+class DLLEXPORT NiPSysResetOnLoopCtlr : public NI_P_SYS_RESET_ON_LOOP_CTLR_PARENT {
 public:
 	NiPSysResetOnLoopCtlr();
 	~NiPSysResetOnLoopCtlr();
diff --git a/obj/NiPSysRotationModifier.h b/obj/NiPSysRotationModifier.h
index f0ea5bbe..2ec785cc 100644
--- a/obj/NiPSysRotationModifier.h
+++ b/obj/NiPSysRotationModifier.h
@@ -15,7 +15,7 @@ typedef Ref<NiPSysRotationModifier> NiPSysRotationModifierRef;
  * NiPSysRotationModifier - Unknown particle system modifier.
  */
 
-class NiPSysRotationModifier : public NI_P_SYS_ROTATION_MODIFIER_PARENT {
+class DLLEXPORT NiPSysRotationModifier : public NI_P_SYS_ROTATION_MODIFIER_PARENT {
 public:
 	NiPSysRotationModifier();
 	~NiPSysRotationModifier();
diff --git a/obj/NiPSysSpawnModifier.h b/obj/NiPSysSpawnModifier.h
index 8695731e..a0aa6976 100644
--- a/obj/NiPSysSpawnModifier.h
+++ b/obj/NiPSysSpawnModifier.h
@@ -15,7 +15,7 @@ typedef Ref<NiPSysSpawnModifier> NiPSysSpawnModifierRef;
  * NiPSysSpawnModifier - Unknown particle modifier.
  */
 
-class NiPSysSpawnModifier : public NI_P_SYS_SPAWN_MODIFIER_PARENT {
+class DLLEXPORT NiPSysSpawnModifier : public NI_P_SYS_SPAWN_MODIFIER_PARENT {
 public:
 	NiPSysSpawnModifier();
 	~NiPSysSpawnModifier();
diff --git a/obj/NiPSysSphereEmitter.h b/obj/NiPSysSphereEmitter.h
index a94b4d16..ed147334 100644
--- a/obj/NiPSysSphereEmitter.h
+++ b/obj/NiPSysSphereEmitter.h
@@ -15,7 +15,7 @@ typedef Ref<NiPSysSphereEmitter> NiPSysSphereEmitterRef;
  * NiPSysSphereEmitter - Unknown.
  */
 
-class NiPSysSphereEmitter : public NI_P_SYS_SPHERE_EMITTER_PARENT {
+class DLLEXPORT NiPSysSphereEmitter : public NI_P_SYS_SPHERE_EMITTER_PARENT {
 public:
 	NiPSysSphereEmitter();
 	~NiPSysSphereEmitter();
diff --git a/obj/NiPSysUpdateCtlr.h b/obj/NiPSysUpdateCtlr.h
index 7568bf34..90fe41f7 100644
--- a/obj/NiPSysUpdateCtlr.h
+++ b/obj/NiPSysUpdateCtlr.h
@@ -15,7 +15,7 @@ typedef Ref<NiPSysUpdateCtlr> NiPSysUpdateCtlrRef;
  * NiPSysUpdateCtlr - Particle system controller, used for ???.
  */
 
-class NiPSysUpdateCtlr : public NI_P_SYS_UPDATE_CTLR_PARENT {
+class DLLEXPORT NiPSysUpdateCtlr : public NI_P_SYS_UPDATE_CTLR_PARENT {
 public:
 	NiPSysUpdateCtlr();
 	~NiPSysUpdateCtlr();
diff --git a/obj/NiPSysVolumeEmitter.h b/obj/NiPSysVolumeEmitter.h
index d409b329..e1e383b9 100644
--- a/obj/NiPSysVolumeEmitter.h
+++ b/obj/NiPSysVolumeEmitter.h
@@ -19,7 +19,7 @@ typedef Ref<NiPSysVolumeEmitter> NiPSysVolumeEmitterRef;
  * NiPSysVolumeEmitter - An emitter that emits meshes?
  */
 
-class NiPSysVolumeEmitter : public NI_P_SYS_VOLUME_EMITTER_PARENT {
+class DLLEXPORT NiPSysVolumeEmitter : public NI_P_SYS_VOLUME_EMITTER_PARENT {
 public:
 	NiPSysVolumeEmitter();
 	~NiPSysVolumeEmitter();
diff --git a/obj/NiPalette.h b/obj/NiPalette.h
index 88d35659..a82b954e 100644
--- a/obj/NiPalette.h
+++ b/obj/NiPalette.h
@@ -15,7 +15,7 @@ typedef Ref<NiPalette> NiPaletteRef;
  * NiPalette - A color palette.
  */
 
-class NiPalette : public NI_PALETTE_PARENT {
+class DLLEXPORT NiPalette : public NI_PALETTE_PARENT {
 public:
 	NiPalette();
 	~NiPalette();
diff --git a/obj/NiParticleBomb.h b/obj/NiParticleBomb.h
index a96902e5..5ff48ad8 100644
--- a/obj/NiParticleBomb.h
+++ b/obj/NiParticleBomb.h
@@ -15,7 +15,7 @@ typedef Ref<NiParticleBomb> NiParticleBombRef;
  * NiParticleBomb - A particle modifier.
  */
 
-class NiParticleBomb : public NI_PARTICLE_BOMB_PARENT {
+class DLLEXPORT NiParticleBomb : public NI_PARTICLE_BOMB_PARENT {
 public:
 	NiParticleBomb();
 	~NiParticleBomb();
diff --git a/obj/NiParticleColorModifier.h b/obj/NiParticleColorModifier.h
index 75799ec7..6810c0a3 100644
--- a/obj/NiParticleColorModifier.h
+++ b/obj/NiParticleColorModifier.h
@@ -19,7 +19,7 @@ typedef Ref<NiParticleColorModifier> NiParticleColorModifierRef;
  * NiParticleColorModifier - Unknown.
  */
 
-class NiParticleColorModifier : public NI_PARTICLE_COLOR_MODIFIER_PARENT {
+class DLLEXPORT NiParticleColorModifier : public NI_PARTICLE_COLOR_MODIFIER_PARENT {
 public:
 	NiParticleColorModifier();
 	~NiParticleColorModifier();
diff --git a/obj/NiParticleGrowFade.h b/obj/NiParticleGrowFade.h
index eb10da79..b6ab0996 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 NiParticleGrowFade : public NI_PARTICLE_GROW_FADE_PARENT {
+class DLLEXPORT NiParticleGrowFade : public NI_PARTICLE_GROW_FADE_PARENT {
 public:
 	NiParticleGrowFade();
 	~NiParticleGrowFade();
diff --git a/obj/NiParticleMeshModifier.h b/obj/NiParticleMeshModifier.h
index 3a9353af..18821459 100644
--- a/obj/NiParticleMeshModifier.h
+++ b/obj/NiParticleMeshModifier.h
@@ -19,7 +19,7 @@ typedef Ref<NiParticleMeshModifier> NiParticleMeshModifierRef;
  * NiParticleMeshModifier - Unknown.
  */
 
-class NiParticleMeshModifier : public NI_PARTICLE_MESH_MODIFIER_PARENT {
+class DLLEXPORT NiParticleMeshModifier : public NI_PARTICLE_MESH_MODIFIER_PARENT {
 public:
 	NiParticleMeshModifier();
 	~NiParticleMeshModifier();
diff --git a/obj/NiParticleMeshes.h b/obj/NiParticleMeshes.h
index 47109143..9f095a49 100644
--- a/obj/NiParticleMeshes.h
+++ b/obj/NiParticleMeshes.h
@@ -15,7 +15,7 @@ typedef Ref<NiParticleMeshes> NiParticleMeshesRef;
  * NiParticleMeshes - Mesh particle node?
  */
 
-class NiParticleMeshes : public NI_PARTICLE_MESHES_PARENT {
+class DLLEXPORT NiParticleMeshes : public NI_PARTICLE_MESHES_PARENT {
 public:
 	NiParticleMeshes();
 	~NiParticleMeshes();
diff --git a/obj/NiParticleMeshesData.h b/obj/NiParticleMeshesData.h
index 4cbd10e4..dbacb8aa 100644
--- a/obj/NiParticleMeshesData.h
+++ b/obj/NiParticleMeshesData.h
@@ -19,7 +19,7 @@ typedef Ref<NiParticleMeshesData> NiParticleMeshesDataRef;
  * NiParticleMeshesData - Particle meshes data.
  */
 
-class NiParticleMeshesData : public NI_PARTICLE_MESHES_DATA_PARENT {
+class DLLEXPORT NiParticleMeshesData : public NI_PARTICLE_MESHES_DATA_PARENT {
 public:
 	NiParticleMeshesData();
 	~NiParticleMeshesData();
diff --git a/obj/NiParticleRotation.h b/obj/NiParticleRotation.h
index f658c9c9..f2ed832d 100644
--- a/obj/NiParticleRotation.h
+++ b/obj/NiParticleRotation.h
@@ -15,7 +15,7 @@ typedef Ref<NiParticleRotation> NiParticleRotationRef;
  * NiParticleRotation - Unknown.
  */
 
-class NiParticleRotation : public NI_PARTICLE_ROTATION_PARENT {
+class DLLEXPORT NiParticleRotation : public NI_PARTICLE_ROTATION_PARENT {
 public:
 	NiParticleRotation();
 	~NiParticleRotation();
diff --git a/obj/NiParticleSystem.h b/obj/NiParticleSystem.h
index ff6bedb8..45b8fc1b 100644
--- a/obj/NiParticleSystem.h
+++ b/obj/NiParticleSystem.h
@@ -19,7 +19,7 @@ typedef Ref<NiParticleSystem> NiParticleSystemRef;
  * NiParticleSystem - A particle system.
  */
 
-class NiParticleSystem : public NI_PARTICLE_SYSTEM_PARENT {
+class DLLEXPORT NiParticleSystem : public NI_PARTICLE_SYSTEM_PARENT {
 public:
 	NiParticleSystem();
 	~NiParticleSystem();
diff --git a/obj/NiParticleSystemController.h b/obj/NiParticleSystemController.h
index 8dec9468..77688d1d 100644
--- a/obj/NiParticleSystemController.h
+++ b/obj/NiParticleSystemController.h
@@ -23,7 +23,7 @@ typedef Ref<NiParticleSystemController> NiParticleSystemControllerRef;
  * block.
  */
 
-class NiParticleSystemController : public NI_PARTICLE_SYSTEM_CONTROLLER_PARENT {
+class DLLEXPORT NiParticleSystemController : public NI_PARTICLE_SYSTEM_CONTROLLER_PARENT {
 public:
 	NiParticleSystemController();
 	~NiParticleSystemController();
diff --git a/obj/NiParticles.h b/obj/NiParticles.h
index c0db8ad6..3fee9abc 100644
--- a/obj/NiParticles.h
+++ b/obj/NiParticles.h
@@ -15,7 +15,7 @@ typedef Ref<NiParticles> NiParticlesRef;
  * NiParticles - Generic particle system node.
  */
 
-class NiParticles : public NI_PARTICLES_PARENT {
+class DLLEXPORT NiParticles : public NI_PARTICLES_PARENT {
 public:
 	NiParticles();
 	~NiParticles();
diff --git a/obj/NiParticlesData.h b/obj/NiParticlesData.h
index ca84d4df..03876e4f 100644
--- a/obj/NiParticlesData.h
+++ b/obj/NiParticlesData.h
@@ -15,7 +15,7 @@ typedef Ref<NiParticlesData> NiParticlesDataRef;
  * NiParticlesData - Generic rotating particles data block.
  */
 
-class NiParticlesData : public NI_PARTICLES_DATA_PARENT {
+class DLLEXPORT NiParticlesData : public NI_PARTICLES_DATA_PARENT {
 public:
 	NiParticlesData();
 	~NiParticlesData();
diff --git a/obj/NiPathController.h b/obj/NiPathController.h
index 9fbd1280..f2ed153a 100644
--- a/obj/NiPathController.h
+++ b/obj/NiPathController.h
@@ -20,7 +20,7 @@ typedef Ref<NiPathController> NiPathControllerRef;
  * NiPathController - Time controller for a path.
  */
 
-class NiPathController : public NI_PATH_CONTROLLER_PARENT {
+class DLLEXPORT NiPathController : public NI_PATH_CONTROLLER_PARENT {
 public:
 	NiPathController();
 	~NiPathController();
diff --git a/obj/NiPathInterpolator.h b/obj/NiPathInterpolator.h
index 89cf6cd2..93dbc86c 100644
--- a/obj/NiPathInterpolator.h
+++ b/obj/NiPathInterpolator.h
@@ -20,7 +20,7 @@ typedef Ref<NiPathInterpolator> NiPathInterpolatorRef;
  * NiPathInterpolator - Unknown interpolator.
  */
 
-class NiPathInterpolator : public NI_PATH_INTERPOLATOR_PARENT {
+class DLLEXPORT NiPathInterpolator : public NI_PATH_INTERPOLATOR_PARENT {
 public:
 	NiPathInterpolator();
 	~NiPathInterpolator();
diff --git a/obj/NiPixelData.h b/obj/NiPixelData.h
index 54b7169a..8ea210e4 100644
--- a/obj/NiPixelData.h
+++ b/obj/NiPixelData.h
@@ -22,7 +22,7 @@ typedef Ref<NiPixelData> NiPixelDataRef;
  * NiPixelData - A texture.
  */
 
-class NiPixelData : public NI_PIXEL_DATA_PARENT {
+class DLLEXPORT NiPixelData : public NI_PIXEL_DATA_PARENT {
 public:
 	NiPixelData();
 	~NiPixelData();
diff --git a/obj/NiPlanarCollider.h b/obj/NiPlanarCollider.h
index 1c1da991..adebfb82 100644
--- a/obj/NiPlanarCollider.h
+++ b/obj/NiPlanarCollider.h
@@ -15,7 +15,7 @@ typedef Ref<NiPlanarCollider> NiPlanarColliderRef;
  * NiPlanarCollider - Unknown.
  */
 
-class NiPlanarCollider : public NI_PLANAR_COLLIDER_PARENT {
+class DLLEXPORT NiPlanarCollider : public NI_PLANAR_COLLIDER_PARENT {
 public:
 	NiPlanarCollider();
 	~NiPlanarCollider();
diff --git a/obj/NiPoint3Interpolator.h b/obj/NiPoint3Interpolator.h
index 874effd1..7474b907 100644
--- a/obj/NiPoint3Interpolator.h
+++ b/obj/NiPoint3Interpolator.h
@@ -19,7 +19,7 @@ typedef Ref<NiPoint3Interpolator> NiPoint3InterpolatorRef;
  * NiPoint3Interpolator - Unknown.
  */
 
-class NiPoint3Interpolator : public NI_POINT3_INTERPOLATOR_PARENT {
+class DLLEXPORT NiPoint3Interpolator : public NI_POINT3_INTERPOLATOR_PARENT {
 public:
 	NiPoint3Interpolator();
 	~NiPoint3Interpolator();
diff --git a/obj/NiPointLight.h b/obj/NiPointLight.h
index f5520ab9..5fce9ca5 100644
--- a/obj/NiPointLight.h
+++ b/obj/NiPointLight.h
@@ -15,7 +15,7 @@ typedef Ref<NiPointLight> NiPointLightRef;
  * NiPointLight - A point light.
  */
 
-class NiPointLight : public NI_POINT_LIGHT_PARENT {
+class DLLEXPORT NiPointLight : public NI_POINT_LIGHT_PARENT {
 public:
 	NiPointLight();
 	~NiPointLight();
diff --git a/obj/NiPosData.h b/obj/NiPosData.h
index 8bfbe5ae..a1c00aa1 100644
--- a/obj/NiPosData.h
+++ b/obj/NiPosData.h
@@ -17,7 +17,7 @@ typedef Ref<NiPosData> NiPosDataRef;
  * NiPosData - Position data.
  */
 
-class NiPosData : public NI_POS_DATA_PARENT {
+class DLLEXPORT NiPosData : public NI_POS_DATA_PARENT {
 public:
 	NiPosData();
 	~NiPosData();
diff --git a/obj/NiProperty.h b/obj/NiProperty.h
index 5b06bbc6..1d505ff3 100644
--- a/obj/NiProperty.h
+++ b/obj/NiProperty.h
@@ -15,7 +15,7 @@ typedef Ref<NiProperty> NiPropertyRef;
  * NiProperty - A generic property block.
  */
 
-class NiProperty : public NI_PROPERTY_PARENT {
+class DLLEXPORT NiProperty : public NI_PROPERTY_PARENT {
 public:
 	NiProperty();
 	~NiProperty();
diff --git a/obj/NiRangeLODData.h b/obj/NiRangeLODData.h
index c6d3fc86..0d0900e7 100644
--- a/obj/NiRangeLODData.h
+++ b/obj/NiRangeLODData.h
@@ -17,7 +17,7 @@ typedef Ref<NiRangeLODData> NiRangeLODDataRef;
  * NiRangeLODData - Describes levels of detail.
  */
 
-class NiRangeLODData : public NI_RANGE_L_O_D_DATA_PARENT {
+class DLLEXPORT NiRangeLODData : public NI_RANGE_L_O_D_DATA_PARENT {
 public:
 	NiRangeLODData();
 	~NiRangeLODData();
diff --git a/obj/NiRotatingParticles.h b/obj/NiRotatingParticles.h
index ada62b29..5876ba3e 100644
--- a/obj/NiRotatingParticles.h
+++ b/obj/NiRotatingParticles.h
@@ -15,7 +15,7 @@ typedef Ref<NiRotatingParticles> NiRotatingParticlesRef;
  * NiRotatingParticles - Unknown.
  */
 
-class NiRotatingParticles : public NI_ROTATING_PARTICLES_PARENT {
+class DLLEXPORT NiRotatingParticles : public NI_ROTATING_PARTICLES_PARENT {
 public:
 	NiRotatingParticles();
 	~NiRotatingParticles();
diff --git a/obj/NiRotatingParticlesData.h b/obj/NiRotatingParticlesData.h
index fd0928c7..dfefb67d 100644
--- a/obj/NiRotatingParticlesData.h
+++ b/obj/NiRotatingParticlesData.h
@@ -15,7 +15,7 @@ typedef Ref<NiRotatingParticlesData> NiRotatingParticlesDataRef;
  * NiRotatingParticlesData - Rotating particles data block.
  */
 
-class NiRotatingParticlesData : public NI_ROTATING_PARTICLES_DATA_PARENT {
+class DLLEXPORT NiRotatingParticlesData : public NI_ROTATING_PARTICLES_DATA_PARENT {
 public:
 	NiRotatingParticlesData();
 	~NiRotatingParticlesData();
diff --git a/obj/NiScreenLODData.h b/obj/NiScreenLODData.h
index bed0e92e..98beeebb 100644
--- a/obj/NiScreenLODData.h
+++ b/obj/NiScreenLODData.h
@@ -15,7 +15,7 @@ typedef Ref<NiScreenLODData> NiScreenLODDataRef;
  * NiScreenLODData - Unknown.
  */
 
-class NiScreenLODData : public NI_SCREEN_L_O_D_DATA_PARENT {
+class DLLEXPORT NiScreenLODData : public NI_SCREEN_L_O_D_DATA_PARENT {
 public:
 	NiScreenLODData();
 	~NiScreenLODData();
diff --git a/obj/NiSequenceStreamHelper.h b/obj/NiSequenceStreamHelper.h
index 6ab0af27..c9a54b5c 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 NiSequenceStreamHelper : public NI_SEQUENCE_STREAM_HELPER_PARENT {
+class DLLEXPORT NiSequenceStreamHelper : public NI_SEQUENCE_STREAM_HELPER_PARENT {
 public:
 	NiSequenceStreamHelper();
 	~NiSequenceStreamHelper();
diff --git a/obj/NiShadeProperty.h b/obj/NiShadeProperty.h
index 6d1ee886..71b71e20 100644
--- a/obj/NiShadeProperty.h
+++ b/obj/NiShadeProperty.h
@@ -16,7 +16,7 @@ typedef Ref<NiShadeProperty> NiShadePropertyRef;
  * used on a shape.
  */
 
-class NiShadeProperty : public NI_SHADE_PROPERTY_PARENT {
+class DLLEXPORT NiShadeProperty : public NI_SHADE_PROPERTY_PARENT {
 public:
 	NiShadeProperty();
 	~NiShadeProperty();
diff --git a/obj/NiSingleInterpolatorController.h b/obj/NiSingleInterpolatorController.h
index 381fc266..0cd19df4 100644
--- a/obj/NiSingleInterpolatorController.h
+++ b/obj/NiSingleInterpolatorController.h
@@ -20,7 +20,7 @@ typedef Ref<NiSingleInterpolatorController> NiSingleInterpolatorControllerRef;
  * interpolator.
  */
 
-class NiSingleInterpolatorController : public NI_SINGLE_INTERPOLATOR_CONTROLLER_PARENT {
+class DLLEXPORT NiSingleInterpolatorController : public NI_SINGLE_INTERPOLATOR_CONTROLLER_PARENT {
 public:
 	NiSingleInterpolatorController();
 	~NiSingleInterpolatorController();
diff --git a/obj/NiSkinData.h b/obj/NiSkinData.h
index 118c816e..084f2575 100644
--- a/obj/NiSkinData.h
+++ b/obj/NiSkinData.h
@@ -21,7 +21,7 @@ typedef Ref<NiSkinData> NiSkinDataRef;
  * NiSkinData - Skinning data.
  */
 
-class NiSkinData : public NI_SKIN_DATA_PARENT {
+class DLLEXPORT NiSkinData : public NI_SKIN_DATA_PARENT {
 public:
 	NiSkinData();
 	~NiSkinData();
diff --git a/obj/NiSkinInstance.h b/obj/NiSkinInstance.h
index f98f8b24..516ffd90 100644
--- a/obj/NiSkinInstance.h
+++ b/obj/NiSkinInstance.h
@@ -23,7 +23,7 @@ typedef Ref<NiSkinInstance> NiSkinInstanceRef;
  * NiSkinInstance - Skinning instance.
  */
 
-class NiSkinInstance : public NI_SKIN_INSTANCE_PARENT {
+class DLLEXPORT NiSkinInstance : public NI_SKIN_INSTANCE_PARENT {
 public:
 	NiSkinInstance();
 	~NiSkinInstance();
diff --git a/obj/NiSkinPartition.h b/obj/NiSkinPartition.h
index a427f716..3c38b015 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 NiSkinPartition : public NI_SKIN_PARTITION_PARENT {
+class DLLEXPORT NiSkinPartition : public NI_SKIN_PARTITION_PARENT {
 public:
 	NiSkinPartition();
 	~NiSkinPartition();
diff --git a/obj/NiSourceTexture.h b/obj/NiSourceTexture.h
index 1add5bd1..1a3387d2 100644
--- a/obj/NiSourceTexture.h
+++ b/obj/NiSourceTexture.h
@@ -20,7 +20,7 @@ typedef Ref<NiSourceTexture> NiSourceTextureRef;
  * NiSourceTexture - Describes texture source and properties.
  */
 
-class NiSourceTexture : public NI_SOURCE_TEXTURE_PARENT {
+class DLLEXPORT NiSourceTexture : public NI_SOURCE_TEXTURE_PARENT {
 public:
 	NiSourceTexture();
 	~NiSourceTexture();
diff --git a/obj/NiSpecularProperty.h b/obj/NiSpecularProperty.h
index 01b4013a..98154374 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 NiSpecularProperty : public NI_SPECULAR_PROPERTY_PARENT {
+class DLLEXPORT NiSpecularProperty : public NI_SPECULAR_PROPERTY_PARENT {
 public:
 	NiSpecularProperty();
 	~NiSpecularProperty();
diff --git a/obj/NiSphericalCollider.h b/obj/NiSphericalCollider.h
index cac0b442..4740722c 100644
--- a/obj/NiSphericalCollider.h
+++ b/obj/NiSphericalCollider.h
@@ -15,7 +15,7 @@ typedef Ref<NiSphericalCollider> NiSphericalColliderRef;
  * NiSphericalCollider - Unknown.
  */
 
-class NiSphericalCollider : public NI_SPHERICAL_COLLIDER_PARENT {
+class DLLEXPORT NiSphericalCollider : public NI_SPHERICAL_COLLIDER_PARENT {
 public:
 	NiSphericalCollider();
 	~NiSphericalCollider();
diff --git a/obj/NiSpotLight.h b/obj/NiSpotLight.h
index ad6e865b..bfe54430 100644
--- a/obj/NiSpotLight.h
+++ b/obj/NiSpotLight.h
@@ -15,7 +15,7 @@ typedef Ref<NiSpotLight> NiSpotLightRef;
  * NiSpotLight - A spot.
  */
 
-class NiSpotLight : public NI_SPOT_LIGHT_PARENT {
+class DLLEXPORT NiSpotLight : public NI_SPOT_LIGHT_PARENT {
 public:
 	NiSpotLight();
 	~NiSpotLight();
diff --git a/obj/NiStencilProperty.h b/obj/NiStencilProperty.h
index ffb57688..c27f3b7c 100644
--- a/obj/NiStencilProperty.h
+++ b/obj/NiStencilProperty.h
@@ -15,7 +15,7 @@ typedef Ref<NiStencilProperty> NiStencilPropertyRef;
  * NiStencilProperty - Allows control of stencil testing.
  */
 
-class NiStencilProperty : public NI_STENCIL_PROPERTY_PARENT {
+class DLLEXPORT NiStencilProperty : public NI_STENCIL_PROPERTY_PARENT {
 public:
 	NiStencilProperty();
 	~NiStencilProperty();
diff --git a/obj/NiStringExtraData.h b/obj/NiStringExtraData.h
index 3656b4e3..2e128f1d 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 NiStringExtraData : public NI_STRING_EXTRA_DATA_PARENT {
+class DLLEXPORT NiStringExtraData : public NI_STRING_EXTRA_DATA_PARENT {
 public:
 	NiStringExtraData();
 	~NiStringExtraData();
diff --git a/obj/NiStringPalette.h b/obj/NiStringPalette.h
index ed0ac1c1..c5e577b0 100644
--- a/obj/NiStringPalette.h
+++ b/obj/NiStringPalette.h
@@ -19,7 +19,7 @@ typedef Ref<NiStringPalette> NiStringPaletteRef;
  * conjunction with NiControllerSequence.
  */
 
-class NiStringPalette : public NI_STRING_PALETTE_PARENT {
+class DLLEXPORT NiStringPalette : public NI_STRING_PALETTE_PARENT {
 public:
 	NiStringPalette();
 	~NiStringPalette();
diff --git a/obj/NiStringsExtraData.h b/obj/NiStringsExtraData.h
index 32ee2433..501f09ed 100644
--- a/obj/NiStringsExtraData.h
+++ b/obj/NiStringsExtraData.h
@@ -16,7 +16,7 @@ typedef Ref<NiStringsExtraData> NiStringsExtraDataRef;
  * names.
  */
 
-class NiStringsExtraData : public NI_STRINGS_EXTRA_DATA_PARENT {
+class DLLEXPORT NiStringsExtraData : public NI_STRINGS_EXTRA_DATA_PARENT {
 public:
 	NiStringsExtraData();
 	~NiStringsExtraData();
diff --git a/obj/NiTextKeyExtraData.h b/obj/NiTextKeyExtraData.h
index 9ca116c6..f0c1e97a 100644
--- a/obj/NiTextKeyExtraData.h
+++ b/obj/NiTextKeyExtraData.h
@@ -16,7 +16,7 @@ typedef Ref<NiTextKeyExtraData> NiTextKeyExtraDataRef;
  * sequences.
  */
 
-class NiTextKeyExtraData : public NI_TEXT_KEY_EXTRA_DATA_PARENT {
+class DLLEXPORT NiTextKeyExtraData : public NI_TEXT_KEY_EXTRA_DATA_PARENT {
 public:
 	NiTextKeyExtraData();
 	~NiTextKeyExtraData();
diff --git a/obj/NiTextureEffect.h b/obj/NiTextureEffect.h
index ee3b26f4..9f6d3d37 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 NiTextureEffect : public NI_TEXTURE_EFFECT_PARENT {
+class DLLEXPORT NiTextureEffect : public NI_TEXTURE_EFFECT_PARENT {
 public:
 	NiTextureEffect();
 	~NiTextureEffect();
diff --git a/obj/NiTextureTransformController.h b/obj/NiTextureTransformController.h
index 0fa0abdd..95479708 100644
--- a/obj/NiTextureTransformController.h
+++ b/obj/NiTextureTransformController.h
@@ -19,7 +19,7 @@ typedef Ref<NiTextureTransformController> NiTextureTransformControllerRef;
  * NiTextureTransformController - Texture transformation controller.
  */
 
-class NiTextureTransformController : public NI_TEXTURE_TRANSFORM_CONTROLLER_PARENT {
+class DLLEXPORT NiTextureTransformController : public NI_TEXTURE_TRANSFORM_CONTROLLER_PARENT {
 public:
 	NiTextureTransformController();
 	~NiTextureTransformController();
diff --git a/obj/NiTexturingProperty.h b/obj/NiTexturingProperty.h
index 8e5ece1f..eec6e334 100644
--- a/obj/NiTexturingProperty.h
+++ b/obj/NiTexturingProperty.h
@@ -18,7 +18,7 @@ typedef Ref<NiTexturingProperty> NiTexturingPropertyRef;
  * NiTexturingProperty - Describes an object's textures.
  */
 
-class NiTexturingProperty : public NI_TEXTURING_PROPERTY_PARENT {
+class DLLEXPORT NiTexturingProperty : public NI_TEXTURING_PROPERTY_PARENT {
 public:
 	NiTexturingProperty();
 	~NiTexturingProperty();
diff --git a/obj/NiTimeController.h b/obj/NiTimeController.h
index 0af01fb0..e0b5f6ea 100644
--- a/obj/NiTimeController.h
+++ b/obj/NiTimeController.h
@@ -20,7 +20,7 @@ typedef Ref<NiTimeController> NiTimeControllerRef;
  * NiTimeController - A generic time controller block.
  */
 
-class NiTimeController : public NI_TIME_CONTROLLER_PARENT {
+class DLLEXPORT NiTimeController : public NI_TIME_CONTROLLER_PARENT {
 public:
 	NiTimeController();
 	~NiTimeController();
diff --git a/obj/NiTransformController.h b/obj/NiTransformController.h
index 6ba456a3..aa10a253 100644
--- a/obj/NiTransformController.h
+++ b/obj/NiTransformController.h
@@ -16,7 +16,7 @@ typedef Ref<NiTransformController> NiTransformControllerRef;
  * NiKeyframeController.
  */
 
-class NiTransformController : public NI_TRANSFORM_CONTROLLER_PARENT {
+class DLLEXPORT NiTransformController : public NI_TRANSFORM_CONTROLLER_PARENT {
 public:
 	NiTransformController();
 	~NiTransformController();
diff --git a/obj/NiTransformData.h b/obj/NiTransformData.h
index 927aa5f8..0ebf784f 100644
--- a/obj/NiTransformData.h
+++ b/obj/NiTransformData.h
@@ -15,7 +15,7 @@ typedef Ref<NiTransformData> NiTransformDataRef;
  * NiTransformData - Mesh animation keyframe data.
  */
 
-class NiTransformData : public NI_TRANSFORM_DATA_PARENT {
+class DLLEXPORT NiTransformData : public NI_TRANSFORM_DATA_PARENT {
 public:
 	NiTransformData();
 	~NiTransformData();
diff --git a/obj/NiTransformInterpolator.h b/obj/NiTransformInterpolator.h
index a93982b5..d2fff7f5 100644
--- a/obj/NiTransformInterpolator.h
+++ b/obj/NiTransformInterpolator.h
@@ -19,7 +19,7 @@ typedef Ref<NiTransformInterpolator> NiTransformInterpolatorRef;
  * NiTransformInterpolator - Unknown.
  */
 
-class NiTransformInterpolator : public NI_TRANSFORM_INTERPOLATOR_PARENT {
+class DLLEXPORT NiTransformInterpolator : public NI_TRANSFORM_INTERPOLATOR_PARENT {
 public:
 	NiTransformInterpolator();
 	~NiTransformInterpolator();
diff --git a/obj/NiTriBasedGeom.h b/obj/NiTriBasedGeom.h
index cd446509..c79f5a1a 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 NiTriBasedGeom : public NI_TRI_BASED_GEOM_PARENT {
+class DLLEXPORT NiTriBasedGeom : public NI_TRI_BASED_GEOM_PARENT {
 public:
 	NiTriBasedGeom();
 	~NiTriBasedGeom();
diff --git a/obj/NiTriBasedGeomData.h b/obj/NiTriBasedGeomData.h
index 98d1b892..73b63101 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 NiTriBasedGeomData : public NI_TRI_BASED_GEOM_DATA_PARENT {
+class DLLEXPORT NiTriBasedGeomData : public NI_TRI_BASED_GEOM_DATA_PARENT {
 public:
 	NiTriBasedGeomData();
 	~NiTriBasedGeomData();
diff --git a/obj/NiTriShape.h b/obj/NiTriShape.h
index c428ff6c..41901825 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 NiTriShape : public NI_TRI_SHAPE_PARENT {
+class DLLEXPORT NiTriShape : public NI_TRI_SHAPE_PARENT {
 public:
 	NiTriShape();
 	~NiTriShape();
diff --git a/obj/NiTriShapeData.h b/obj/NiTriShapeData.h
index 62bac805..553ffdec 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 NiTriShapeData : public NI_TRI_SHAPE_DATA_PARENT {
+class DLLEXPORT NiTriShapeData : public NI_TRI_SHAPE_DATA_PARENT {
 public:
 	NiTriShapeData();
 	~NiTriShapeData();
diff --git a/obj/NiTriStrips.h b/obj/NiTriStrips.h
index e7f659af..d467e54e 100644
--- a/obj/NiTriStrips.h
+++ b/obj/NiTriStrips.h
@@ -16,7 +16,7 @@ typedef Ref<NiTriStrips> NiTriStripsRef;
  * of triangles
  */
 
-class NiTriStrips : public NI_TRI_STRIPS_PARENT {
+class DLLEXPORT NiTriStrips : public NI_TRI_STRIPS_PARENT {
 public:
 	NiTriStrips();
 	~NiTriStrips();
diff --git a/obj/NiTriStripsData.h b/obj/NiTriStripsData.h
index 2cc5516e..23dadaf5 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 NiTriStripsData : public NI_TRI_STRIPS_DATA_PARENT {
+class DLLEXPORT NiTriStripsData : public NI_TRI_STRIPS_DATA_PARENT {
 public:
 	NiTriStripsData();
 	~NiTriStripsData();
diff --git a/obj/NiUVController.h b/obj/NiUVController.h
index 11ad3f6f..7650ff50 100644
--- a/obj/NiUVController.h
+++ b/obj/NiUVController.h
@@ -19,7 +19,7 @@ typedef Ref<NiUVController> NiUVControllerRef;
  * NiUVController - Time controller for texture coordinates.
  */
 
-class NiUVController : public NI_U_V_CONTROLLER_PARENT {
+class DLLEXPORT NiUVController : public NI_U_V_CONTROLLER_PARENT {
 public:
 	NiUVController();
 	~NiUVController();
diff --git a/obj/NiUVData.h b/obj/NiUVData.h
index 5609a7cc..5d4b288e 100644
--- a/obj/NiUVData.h
+++ b/obj/NiUVData.h
@@ -17,7 +17,7 @@ typedef Ref<NiUVData> NiUVDataRef;
  * NiUVData - Texture coordinate data.
  */
 
-class NiUVData : public NI_U_V_DATA_PARENT {
+class DLLEXPORT NiUVData : public NI_U_V_DATA_PARENT {
 public:
 	NiUVData();
 	~NiUVData();
diff --git a/obj/NiVectorExtraData.h b/obj/NiVectorExtraData.h
index 4e7f0852..b5ade621 100644
--- a/obj/NiVectorExtraData.h
+++ b/obj/NiVectorExtraData.h
@@ -15,7 +15,7 @@ typedef Ref<NiVectorExtraData> NiVectorExtraDataRef;
  * NiVectorExtraData - Extra vector data.
  */
 
-class NiVectorExtraData : public NI_VECTOR_EXTRA_DATA_PARENT {
+class DLLEXPORT NiVectorExtraData : public NI_VECTOR_EXTRA_DATA_PARENT {
 public:
 	NiVectorExtraData();
 	~NiVectorExtraData();
diff --git a/obj/NiVertWeightsExtraData.h b/obj/NiVertWeightsExtraData.h
index f49134b5..5d08f1c9 100644
--- a/obj/NiVertWeightsExtraData.h
+++ b/obj/NiVertWeightsExtraData.h
@@ -16,7 +16,7 @@ typedef Ref<NiVertWeightsExtraData> NiVertWeightsExtraDataRef;
  * for morphing animation or gravity.
  */
 
-class NiVertWeightsExtraData : public NI_VERT_WEIGHTS_EXTRA_DATA_PARENT {
+class DLLEXPORT NiVertWeightsExtraData : public NI_VERT_WEIGHTS_EXTRA_DATA_PARENT {
 public:
 	NiVertWeightsExtraData();
 	~NiVertWeightsExtraData();
diff --git a/obj/NiVertexColorProperty.h b/obj/NiVertexColorProperty.h
index 993d53bd..03449b32 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 NiVertexColorProperty : public NI_VERTEX_COLOR_PROPERTY_PARENT {
+class DLLEXPORT NiVertexColorProperty : public NI_VERTEX_COLOR_PROPERTY_PARENT {
 public:
 	NiVertexColorProperty();
 	~NiVertexColorProperty();
diff --git a/obj/NiVisController.h b/obj/NiVisController.h
index 9cea16f7..885953db 100644
--- a/obj/NiVisController.h
+++ b/obj/NiVisController.h
@@ -19,7 +19,7 @@ typedef Ref<NiVisController> NiVisControllerRef;
  * NiVisController - Time controller for visibility.
  */
 
-class NiVisController : public NI_VIS_CONTROLLER_PARENT {
+class DLLEXPORT NiVisController : public NI_VIS_CONTROLLER_PARENT {
 public:
 	NiVisController();
 	~NiVisController();
diff --git a/obj/NiVisData.h b/obj/NiVisData.h
index cb8b2057..30353066 100644
--- a/obj/NiVisData.h
+++ b/obj/NiVisData.h
@@ -15,7 +15,7 @@ typedef Ref<NiVisData> NiVisDataRef;
  * NiVisData - Visibility data for a controller.
  */
 
-class NiVisData : public NI_VIS_DATA_PARENT {
+class DLLEXPORT NiVisData : public NI_VIS_DATA_PARENT {
 public:
 	NiVisData();
 	~NiVisData();
diff --git a/obj/NiWireframeProperty.h b/obj/NiWireframeProperty.h
index 72f89cc9..1e205c4f 100644
--- a/obj/NiWireframeProperty.h
+++ b/obj/NiWireframeProperty.h
@@ -15,7 +15,7 @@ typedef Ref<NiWireframeProperty> NiWireframePropertyRef;
  * NiWireframeProperty - Unknown.
  */
 
-class NiWireframeProperty : public NI_WIREFRAME_PROPERTY_PARENT {
+class DLLEXPORT NiWireframeProperty : public NI_WIREFRAME_PROPERTY_PARENT {
 public:
 	NiWireframeProperty();
 	~NiWireframeProperty();
diff --git a/obj/NiZBufferProperty.h b/obj/NiZBufferProperty.h
index 2ef1c9ac..bec73dde 100644
--- a/obj/NiZBufferProperty.h
+++ b/obj/NiZBufferProperty.h
@@ -16,7 +16,7 @@ typedef Ref<NiZBufferProperty> NiZBufferPropertyRef;
  * depth buffer).
  */
 
-class NiZBufferProperty : public NI_Z_BUFFER_PROPERTY_PARENT {
+class DLLEXPORT NiZBufferProperty : public NI_Z_BUFFER_PROPERTY_PARENT {
 public:
 	NiZBufferProperty();
 	~NiZBufferProperty();
diff --git a/obj/RootCollisionNode.h b/obj/RootCollisionNode.h
index 3d597ea3..47e208df 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 RootCollisionNode : public ROOT_COLLISION_NODE_PARENT {
+class DLLEXPORT RootCollisionNode : public ROOT_COLLISION_NODE_PARENT {
 public:
 	RootCollisionNode();
 	~RootCollisionNode();
diff --git a/obj/bhkBlendCollisionObject.h b/obj/bhkBlendCollisionObject.h
index 07bc1fc4..ad2ec806 100644
--- a/obj/bhkBlendCollisionObject.h
+++ b/obj/bhkBlendCollisionObject.h
@@ -15,7 +15,7 @@ typedef Ref<bhkBlendCollisionObject> bhkBlendCollisionObjectRef;
  * bhkBlendCollisionObject - Unknown.
  */
 
-class bhkBlendCollisionObject : public BHK_BLEND_COLLISION_OBJECT_PARENT {
+class DLLEXPORT bhkBlendCollisionObject : public BHK_BLEND_COLLISION_OBJECT_PARENT {
 public:
 	bhkBlendCollisionObject();
 	~bhkBlendCollisionObject();
diff --git a/obj/bhkBlendController.h b/obj/bhkBlendController.h
index 20ed17fd..20662134 100644
--- a/obj/bhkBlendController.h
+++ b/obj/bhkBlendController.h
@@ -16,7 +16,7 @@ typedef Ref<bhkBlendController> bhkBlendControllerRef;
  * files.
  */
 
-class bhkBlendController : public BHK_BLEND_CONTROLLER_PARENT {
+class DLLEXPORT bhkBlendController : public BHK_BLEND_CONTROLLER_PARENT {
 public:
 	bhkBlendController();
 	~bhkBlendController();
diff --git a/obj/bhkBoxShape.h b/obj/bhkBoxShape.h
index e5deb885..95d11651 100644
--- a/obj/bhkBoxShape.h
+++ b/obj/bhkBoxShape.h
@@ -15,7 +15,7 @@ typedef Ref<bhkBoxShape> bhkBoxShapeRef;
  * bhkBoxShape - A box.
  */
 
-class bhkBoxShape : public BHK_BOX_SHAPE_PARENT {
+class DLLEXPORT bhkBoxShape : public BHK_BOX_SHAPE_PARENT {
 public:
 	bhkBoxShape();
 	~bhkBoxShape();
diff --git a/obj/bhkCapsuleShape.h b/obj/bhkCapsuleShape.h
index 6080792b..84d7bdac 100644
--- a/obj/bhkCapsuleShape.h
+++ b/obj/bhkCapsuleShape.h
@@ -15,7 +15,7 @@ typedef Ref<bhkCapsuleShape> bhkCapsuleShapeRef;
  * bhkCapsuleShape - A capsule.
  */
 
-class bhkCapsuleShape : public BHK_CAPSULE_SHAPE_PARENT {
+class DLLEXPORT bhkCapsuleShape : public BHK_CAPSULE_SHAPE_PARENT {
 public:
 	bhkCapsuleShape();
 	~bhkCapsuleShape();
diff --git a/obj/bhkCollisionObject.h b/obj/bhkCollisionObject.h
index 076f0bf0..d695f9b5 100644
--- a/obj/bhkCollisionObject.h
+++ b/obj/bhkCollisionObject.h
@@ -15,7 +15,7 @@ typedef Ref<bhkCollisionObject> bhkCollisionObjectRef;
  * bhkCollisionObject - Unknown.
  */
 
-class bhkCollisionObject : public BHK_COLLISION_OBJECT_PARENT {
+class DLLEXPORT bhkCollisionObject : public BHK_COLLISION_OBJECT_PARENT {
 public:
 	bhkCollisionObject();
 	~bhkCollisionObject();
diff --git a/obj/bhkConvexShape.h b/obj/bhkConvexShape.h
index ee365076..85c289da 100644
--- a/obj/bhkConvexShape.h
+++ b/obj/bhkConvexShape.h
@@ -15,7 +15,7 @@ typedef Ref<bhkConvexShape> bhkConvexShapeRef;
  * bhkConvexShape - A havok shape.
  */
 
-class bhkConvexShape : public BHK_CONVEX_SHAPE_PARENT {
+class DLLEXPORT bhkConvexShape : public BHK_CONVEX_SHAPE_PARENT {
 public:
 	bhkConvexShape();
 	~bhkConvexShape();
diff --git a/obj/bhkConvexTransformShape.h b/obj/bhkConvexTransformShape.h
index e75bf042..d8a9b8d5 100644
--- a/obj/bhkConvexTransformShape.h
+++ b/obj/bhkConvexTransformShape.h
@@ -15,7 +15,7 @@ typedef Ref<bhkConvexTransformShape> bhkConvexTransformShapeRef;
  * bhkConvexTransformShape - A convex transformed shape?
  */
 
-class bhkConvexTransformShape : public BHK_CONVEX_TRANSFORM_SHAPE_PARENT {
+class DLLEXPORT bhkConvexTransformShape : public BHK_CONVEX_TRANSFORM_SHAPE_PARENT {
 public:
 	bhkConvexTransformShape();
 	~bhkConvexTransformShape();
diff --git a/obj/bhkConvexVerticesShape.h b/obj/bhkConvexVerticesShape.h
index 05ec8a16..59af05df 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 bhkConvexVerticesShape : public BHK_CONVEX_VERTICES_SHAPE_PARENT {
+class DLLEXPORT bhkConvexVerticesShape : public BHK_CONVEX_VERTICES_SHAPE_PARENT {
 public:
 	bhkConvexVerticesShape();
 	~bhkConvexVerticesShape();
diff --git a/obj/bhkEntity.h b/obj/bhkEntity.h
index d365238e..0ea449da 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 bhkEntity : public BHK_ENTITY_PARENT {
+class DLLEXPORT bhkEntity : public BHK_ENTITY_PARENT {
 public:
 	bhkEntity();
 	~bhkEntity();
diff --git a/obj/bhkHingeConstraint.h b/obj/bhkHingeConstraint.h
index 27a7af98..bd087f12 100644
--- a/obj/bhkHingeConstraint.h
+++ b/obj/bhkHingeConstraint.h
@@ -15,7 +15,7 @@ typedef Ref<bhkHingeConstraint> bhkHingeConstraintRef;
  * bhkHingeConstraint - A hinge constraint.
  */
 
-class bhkHingeConstraint : public BHK_HINGE_CONSTRAINT_PARENT {
+class DLLEXPORT bhkHingeConstraint : public BHK_HINGE_CONSTRAINT_PARENT {
 public:
 	bhkHingeConstraint();
 	~bhkHingeConstraint();
diff --git a/obj/bhkLimitedHingeConstraint.h b/obj/bhkLimitedHingeConstraint.h
index 5cbee63f..9c5990d6 100644
--- a/obj/bhkLimitedHingeConstraint.h
+++ b/obj/bhkLimitedHingeConstraint.h
@@ -17,7 +17,7 @@ typedef Ref<bhkLimitedHingeConstraint> bhkLimitedHingeConstraintRef;
  * bhkLimitedHingeConstraint - Hinge constraint.
  */
 
-class bhkLimitedHingeConstraint : public BHK_LIMITED_HINGE_CONSTRAINT_PARENT {
+class DLLEXPORT bhkLimitedHingeConstraint : public BHK_LIMITED_HINGE_CONSTRAINT_PARENT {
 public:
 	bhkLimitedHingeConstraint();
 	~bhkLimitedHingeConstraint();
diff --git a/obj/bhkListShape.h b/obj/bhkListShape.h
index 5a91d72c..b414b6c1 100644
--- a/obj/bhkListShape.h
+++ b/obj/bhkListShape.h
@@ -19,7 +19,7 @@ typedef Ref<bhkListShape> bhkListShapeRef;
  * bhkListShape - A list of shapes.
  */
 
-class bhkListShape : public BHK_LIST_SHAPE_PARENT {
+class DLLEXPORT bhkListShape : public BHK_LIST_SHAPE_PARENT {
 public:
 	bhkListShape();
 	~bhkListShape();
diff --git a/obj/bhkMalleableConstraint.h b/obj/bhkMalleableConstraint.h
index 2221ca89..453d8cf9 100644
--- a/obj/bhkMalleableConstraint.h
+++ b/obj/bhkMalleableConstraint.h
@@ -22,7 +22,7 @@ typedef Ref<bhkMalleableConstraint> bhkMalleableConstraintRef;
  * bhkMalleableConstraint - A malleable constraint.
  */
 
-class bhkMalleableConstraint : public BHK_MALLEABLE_CONSTRAINT_PARENT {
+class DLLEXPORT bhkMalleableConstraint : public BHK_MALLEABLE_CONSTRAINT_PARENT {
 public:
 	bhkMalleableConstraint();
 	~bhkMalleableConstraint();
diff --git a/obj/bhkMoppBvTreeShape.h b/obj/bhkMoppBvTreeShape.h
index d52b905f..a75376e6 100644
--- a/obj/bhkMoppBvTreeShape.h
+++ b/obj/bhkMoppBvTreeShape.h
@@ -20,7 +20,7 @@ typedef Ref<bhkMoppBvTreeShape> bhkMoppBvTreeShapeRef;
  * tree shape (not an entity).
  */
 
-class bhkMoppBvTreeShape : public BHK_MOPP_BV_TREE_SHAPE_PARENT {
+class DLLEXPORT bhkMoppBvTreeShape : public BHK_MOPP_BV_TREE_SHAPE_PARENT {
 public:
 	bhkMoppBvTreeShape();
 	~bhkMoppBvTreeShape();
diff --git a/obj/bhkMultiSphereShape.h b/obj/bhkMultiSphereShape.h
index c4f2842f..9f83f0d8 100644
--- a/obj/bhkMultiSphereShape.h
+++ b/obj/bhkMultiSphereShape.h
@@ -15,7 +15,7 @@ typedef Ref<bhkMultiSphereShape> bhkMultiSphereShapeRef;
  * bhkMultiSphereShape - Unknown.
  */
 
-class bhkMultiSphereShape : public BHK_MULTI_SPHERE_SHAPE_PARENT {
+class DLLEXPORT bhkMultiSphereShape : public BHK_MULTI_SPHERE_SHAPE_PARENT {
 public:
 	bhkMultiSphereShape();
 	~bhkMultiSphereShape();
diff --git a/obj/bhkNiTriStripsShape.h b/obj/bhkNiTriStripsShape.h
index 9b46ee6e..91e37795 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 bhkNiTriStripsShape : public BHK_NI_TRI_STRIPS_SHAPE_PARENT {
+class DLLEXPORT bhkNiTriStripsShape : public BHK_NI_TRI_STRIPS_SHAPE_PARENT {
 public:
 	bhkNiTriStripsShape();
 	~bhkNiTriStripsShape();
diff --git a/obj/bhkPackedNiTriStripsShape.h b/obj/bhkPackedNiTriStripsShape.h
index 76214d26..30fcbb72 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 bhkPackedNiTriStripsShape : public BHK_PACKED_NI_TRI_STRIPS_SHAPE_PARENT {
+class DLLEXPORT bhkPackedNiTriStripsShape : public BHK_PACKED_NI_TRI_STRIPS_SHAPE_PARENT {
 public:
 	bhkPackedNiTriStripsShape();
 	~bhkPackedNiTriStripsShape();
diff --git a/obj/bhkPrismaticConstraint.h b/obj/bhkPrismaticConstraint.h
index 93c790d1..e37c9187 100644
--- a/obj/bhkPrismaticConstraint.h
+++ b/obj/bhkPrismaticConstraint.h
@@ -15,7 +15,7 @@ typedef Ref<bhkPrismaticConstraint> bhkPrismaticConstraintRef;
  * bhkPrismaticConstraint - A prismatic constraint.
  */
 
-class bhkPrismaticConstraint : public BHK_PRISMATIC_CONSTRAINT_PARENT {
+class DLLEXPORT bhkPrismaticConstraint : public BHK_PRISMATIC_CONSTRAINT_PARENT {
 public:
 	bhkPrismaticConstraint();
 	~bhkPrismaticConstraint();
diff --git a/obj/bhkRagdollConstraint.h b/obj/bhkRagdollConstraint.h
index f0325290..31580a44 100644
--- a/obj/bhkRagdollConstraint.h
+++ b/obj/bhkRagdollConstraint.h
@@ -15,7 +15,7 @@ typedef Ref<bhkRagdollConstraint> bhkRagdollConstraintRef;
  * bhkRagdollConstraint - Ragdoll constraint.
  */
 
-class bhkRagdollConstraint : public BHK_RAGDOLL_CONSTRAINT_PARENT {
+class DLLEXPORT bhkRagdollConstraint : public BHK_RAGDOLL_CONSTRAINT_PARENT {
 public:
 	bhkRagdollConstraint();
 	~bhkRagdollConstraint();
diff --git a/obj/bhkRefObject.h b/obj/bhkRefObject.h
index 5e66d03b..358e8e2f 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 bhkRefObject : public BHK_REF_OBJECT_PARENT {
+class DLLEXPORT bhkRefObject : public BHK_REF_OBJECT_PARENT {
 public:
 	bhkRefObject();
 	~bhkRefObject();
diff --git a/obj/bhkRigidBody.h b/obj/bhkRigidBody.h
index e9c98672..138d5f82 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 bhkRigidBody : public BHK_RIGID_BODY_PARENT {
+class DLLEXPORT bhkRigidBody : public BHK_RIGID_BODY_PARENT {
 public:
 	bhkRigidBody();
 	~bhkRigidBody();
diff --git a/obj/bhkRigidBodyT.h b/obj/bhkRigidBodyT.h
index 26b89681..7f387aad 100644
--- a/obj/bhkRigidBodyT.h
+++ b/obj/bhkRigidBodyT.h
@@ -15,7 +15,7 @@ typedef Ref<bhkRigidBodyT> bhkRigidBodyTRef;
  * bhkRigidBodyT - Unknown.
  */
 
-class bhkRigidBodyT : public BHK_RIGID_BODY_T_PARENT {
+class DLLEXPORT bhkRigidBodyT : public BHK_RIGID_BODY_T_PARENT {
 public:
 	bhkRigidBodyT();
 	~bhkRigidBodyT();
diff --git a/obj/bhkSPCollisionObject.h b/obj/bhkSPCollisionObject.h
index 7d9a9b12..63517915 100644
--- a/obj/bhkSPCollisionObject.h
+++ b/obj/bhkSPCollisionObject.h
@@ -15,7 +15,7 @@ typedef Ref<bhkSPCollisionObject> bhkSPCollisionObjectRef;
  * bhkSPCollisionObject - Unknown.
  */
 
-class bhkSPCollisionObject : public BHK_S_P_COLLISION_OBJECT_PARENT {
+class DLLEXPORT bhkSPCollisionObject : public BHK_S_P_COLLISION_OBJECT_PARENT {
 public:
 	bhkSPCollisionObject();
 	~bhkSPCollisionObject();
diff --git a/obj/bhkSerializable.h b/obj/bhkSerializable.h
index 09a97d1e..159ed04f 100644
--- a/obj/bhkSerializable.h
+++ b/obj/bhkSerializable.h
@@ -16,7 +16,7 @@ typedef Ref<bhkSerializable> bhkSerializableRef;
  * disk?
  */
 
-class bhkSerializable : public BHK_SERIALIZABLE_PARENT {
+class DLLEXPORT bhkSerializable : public BHK_SERIALIZABLE_PARENT {
 public:
 	bhkSerializable();
 	~bhkSerializable();
diff --git a/obj/bhkShape.h b/obj/bhkShape.h
index 5ffd2c7a..d66cd7a5 100644
--- a/obj/bhkShape.h
+++ b/obj/bhkShape.h
@@ -15,7 +15,7 @@ typedef Ref<bhkShape> bhkShapeRef;
  * bhkShape - A Havok Shape?
  */
 
-class bhkShape : public BHK_SHAPE_PARENT {
+class DLLEXPORT bhkShape : public BHK_SHAPE_PARENT {
 public:
 	bhkShape();
 	~bhkShape();
diff --git a/obj/bhkSimpleShapePhantom.h b/obj/bhkSimpleShapePhantom.h
index f7ef47d5..79c62687 100644
--- a/obj/bhkSimpleShapePhantom.h
+++ b/obj/bhkSimpleShapePhantom.h
@@ -15,7 +15,7 @@ typedef Ref<bhkSimpleShapePhantom> bhkSimpleShapePhantomRef;
  * bhkSimpleShapePhantom - Unknown shape.
  */
 
-class bhkSimpleShapePhantom : public BHK_SIMPLE_SHAPE_PHANTOM_PARENT {
+class DLLEXPORT bhkSimpleShapePhantom : public BHK_SIMPLE_SHAPE_PHANTOM_PARENT {
 public:
 	bhkSimpleShapePhantom();
 	~bhkSimpleShapePhantom();
diff --git a/obj/bhkSphereRepShape.h b/obj/bhkSphereRepShape.h
index 1b4f0538..db4a9d11 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 bhkSphereRepShape : public BHK_SPHERE_REP_SHAPE_PARENT {
+class DLLEXPORT bhkSphereRepShape : public BHK_SPHERE_REP_SHAPE_PARENT {
 public:
 	bhkSphereRepShape();
 	~bhkSphereRepShape();
diff --git a/obj/bhkSphereShape.h b/obj/bhkSphereShape.h
index 93980097..734fc8a2 100644
--- a/obj/bhkSphereShape.h
+++ b/obj/bhkSphereShape.h
@@ -15,7 +15,7 @@ typedef Ref<bhkSphereShape> bhkSphereShapeRef;
  * bhkSphereShape - A sphere.
  */
 
-class bhkSphereShape : public BHK_SPHERE_SHAPE_PARENT {
+class DLLEXPORT bhkSphereShape : public BHK_SPHERE_SHAPE_PARENT {
 public:
 	bhkSphereShape();
 	~bhkSphereShape();
diff --git a/obj/bhkStiffSpringConstraint.h b/obj/bhkStiffSpringConstraint.h
index cad63a49..263119a5 100644
--- a/obj/bhkStiffSpringConstraint.h
+++ b/obj/bhkStiffSpringConstraint.h
@@ -15,7 +15,7 @@ typedef Ref<bhkStiffSpringConstraint> bhkStiffSpringConstraintRef;
  * bhkStiffSpringConstraint - A spring constraint.
  */
 
-class bhkStiffSpringConstraint : public BHK_STIFF_SPRING_CONSTRAINT_PARENT {
+class DLLEXPORT bhkStiffSpringConstraint : public BHK_STIFF_SPRING_CONSTRAINT_PARENT {
 public:
 	bhkStiffSpringConstraint();
 	~bhkStiffSpringConstraint();
diff --git a/obj/bhkTransformShape.h b/obj/bhkTransformShape.h
index 9c18dc4c..770b198c 100644
--- a/obj/bhkTransformShape.h
+++ b/obj/bhkTransformShape.h
@@ -15,7 +15,7 @@ typedef Ref<bhkTransformShape> bhkTransformShapeRef;
  * bhkTransformShape - Transforms a shape.
  */
 
-class bhkTransformShape : public BHK_TRANSFORM_SHAPE_PARENT {
+class DLLEXPORT bhkTransformShape : public BHK_TRANSFORM_SHAPE_PARENT {
 public:
 	bhkTransformShape();
 	~bhkTransformShape();
diff --git a/obj/bhkWorldObject.h b/obj/bhkWorldObject.h
index 38f464f2..a160b2e9 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 bhkWorldObject : public BHK_WORLD_OBJECT_PARENT {
+class DLLEXPORT bhkWorldObject : public BHK_WORLD_OBJECT_PARENT {
 public:
 	bhkWorldObject();
 	~bhkWorldObject();
diff --git a/obj/hkPackedNiTriStripsData.h b/obj/hkPackedNiTriStripsData.h
index b3b5c267..efa3f05b 100644
--- a/obj/hkPackedNiTriStripsData.h
+++ b/obj/hkPackedNiTriStripsData.h
@@ -17,7 +17,7 @@ typedef Ref<hkPackedNiTriStripsData> hkPackedNiTriStripsDataRef;
  * hkPackedNiTriStripsData - NiTriStripsData for havok data?
  */
 
-class hkPackedNiTriStripsData : public HK_PACKED_NI_TRI_STRIPS_DATA_PARENT {
+class DLLEXPORT hkPackedNiTriStripsData : public HK_PACKED_NI_TRI_STRIPS_DATA_PARENT {
 public:
 	hkPackedNiTriStripsData();
 	~hkPackedNiTriStripsData();
diff --git a/pch.h b/pch.h
index 2376a1b0..f30ab708 100644
--- a/pch.h
+++ b/pch.h
@@ -1,5 +1,6 @@
 //Headers to pre-compile
 
+#include "dll_export.h"
 #include "NIF_IO.h"
 #include "nif_math.h"
 #include "niflib.h"
-- 
GitLab