JoshEngebretson 10 жил өмнө
parent
commit
e29d203cfb

+ 9 - 2
Build/AtomicSharp/AtomicEngine.cs

@@ -21,8 +21,15 @@ namespace AtomicEngine
 
 		static Atomic()
 		{
-			Initialize ();
-		}
+            try { 
+			    Initialize ();
+            }
+            catch (Exception e)
+            {
+                Console.WriteLine(e.ToString());
+                throw;
+            }
+        }
 
 		public static void Run()
 		{

+ 9 - 2
Source/AtomicSharp/AtomicSharpAPI.cpp

@@ -13,12 +13,19 @@
 
 #include "AtomicSharp.h"
 
+#ifdef ATOMIC_PLATFORM_WINDOWS
+#pragma warning(disable: 4244) // possible loss of data
+#define ATOMIC_EXPORT_API __declspec(dllexport)
+#else
+#define ATOMIC_EXPORT_API
+#endif
+
 using namespace Atomic;
 
 extern "C"
 {
 
-ClassID csb_RefCounted_GetClassID(RefCounted* refCounted)
+ATOMIC_EXPORT_API ClassID csb_RefCounted_GetClassID(RefCounted* refCounted)
 {
     if (!refCounted)
         return 0;
@@ -26,7 +33,7 @@ ClassID csb_RefCounted_GetClassID(RefCounted* refCounted)
     return refCounted->GetClassID();
 }
 
-RefCounted* csb_AtomicEngine_GetSubsystem(const char* name)
+ATOMIC_EXPORT_API RefCounted* csb_AtomicEngine_GetSubsystem(const char* name)
 {
     return AtomicSharp::GetContext()->GetSubsystem(name);
 }

+ 8 - 9
Source/AtomicSharp/AtomicSharpApp.cpp

@@ -263,22 +263,21 @@ static SharedPtr<AtomicPlayer::AtomicPlayerApp> sApplication;
 
 extern "C" {
 
-void atomicsharp_hrmph(Vector3* in, Vector3* out)
-{
-    out->x_ = in->x_ + 1;
-    out->y_ = in->y_ + 2;
-    out->z_ = in->z_ + 3;
-
-}
+#ifdef ATOMIC_PLATFORM_WINDOWS
+#pragma warning(disable: 4244) // possible loss of data
+#define ATOMIC_EXPORT_API __declspec(dllexport)
+#else
+#define ATOMIC_EXPORT_API
+#endif
 
-int atomicsharp_initialize()
+ATOMIC_EXPORT_API int atomicsharp_initialize()
 {
     sContext = new Atomic::Context();
     sApplication = new AtomicPlayer::AtomicPlayerApp(sContext);
     return sApplication->Initialize();
 }
 
-bool atomicsharp_runframe()
+ATOMIC_EXPORT_API bool atomicsharp_runframe()
 {
     if (!sApplication->RunFrame())
     {

+ 1 - 1
Source/ToolCore/JSBind/CSharp/CSClassWriter.cpp

@@ -56,7 +56,7 @@ void CSClassWriter::GenerateNativeSource(String& sourceOut)
 
     JSBPackage* package = klass_->GetPackage();
 
-    source.AppendWithFormat("ClassID csb_%s_%s_GetClassIDStatic()\n{\n", package->GetName().CString(),klass_->GetName().CString());
+    source.AppendWithFormat("ATOMIC_EXPORT_API ClassID csb_%s_%s_GetClassIDStatic()\n{\n", package->GetName().CString(),klass_->GetName().CString());
     source.AppendWithFormat("   return %s::GetClassIDStatic();\n}\n\n", klass_->GetNativeName().CString());
 
     WriteNativeFunctions(source);

+ 1 - 1
Source/ToolCore/JSBind/CSharp/CSFunctionWriter.cpp

@@ -243,7 +243,7 @@ void CSFunctionWriter::WriteNativeFunction(String& source)
     String sig;
     GenNativeFunctionSignature(sig);
 
-    line = ToString("%s csb_%s_%s_%s(%s)\n",
+    line = ToString("ATOMIC_EXPORT_API %s csb_%s_%s_%s(%s)\n",
                     returnType.CString(), package->GetName().CString(), klass->GetName().CString(),
                     fname.CString(), sig.CString());
 

+ 6 - 0
Source/ToolCore/JSBind/CSharp/CSModuleWriter.cpp

@@ -87,6 +87,12 @@ void CSModuleWriter::GenerateNativeSource()
 
     source += "#pragma warning(disable: 4244) // possible loss of data\n";
 
+    source += "#define ATOMIC_EXPORT_API __declspec(dllexport)\n";
+
+    source += "#else\n";
+
+    source += "#define ATOMIC_EXPORT_API\n";
+
     source += "#endif\n";
 
     if (module_->Requires("3D"))