diff --git a/Repl.vcxproj b/Repl.vcxproj
index 4d736c2..a284185 100644
--- a/Repl.vcxproj
+++ b/Repl.vcxproj
@@ -115,15 +115,13 @@
$(SolutionDir)/source;%(AdditionalIncludeDirectories)stdc17
-
-
+ LIB_RUNNER_EXPORTstdc17
-
-
+ LIB_RUNNER_EXPORT$(SolutionDir)/source;%(AdditionalIncludeDirectories)
diff --git a/repl/lib_runner.h b/repl/lib_runner.h
index bd26ac9..5c5b81c 100644
--- a/repl/lib_runner.h
+++ b/repl/lib_runner.h
@@ -5,12 +5,31 @@
int Toy_hookRunner(Toy_Interpreter* interpreter, Toy_Literal identifier, Toy_Literal alias);
-//file system API - these need to be set by the host
-TOY_API void Toy_initDriveDictionary();
-TOY_API void Toy_freeDriveDictionary();
-TOY_API Toy_LiteralDictionary* Toy_getDriveDictionary();
-
#define TOY_OPAQUE_TAG_RUNNER 100
+//platform/compiler-specific instructions - because MSVC + Box Engine are dumber than a bag of rocks
+#if defined(__linux__) || defined(__MINGW32__) || defined(__GNUC__)
+
+#define LIB_RUNNER_API extern
+
+#elif defined(_MSC_VER)
+
+#ifndef LIB_RUNNER_EXPORT
+#define LIB_RUNNER_API __declspec(dllimport)
+#else
+#define LIB_RUNNER_API __declspec(dllexport)
+#endif
+
+#else
+
+#define LIB_RUNNER_API extern
+
+#endif
+
+//file system API - these need to be set by the host
+LIB_RUNNER_API void Toy_initDriveDictionary();
+LIB_RUNNER_API void Toy_freeDriveDictionary();
+LIB_RUNNER_API Toy_LiteralDictionary* Toy_getDriveDictionary();
+
//file system API - for use with other libs
-Toy_Literal Toy_getFilePathLiteral(Toy_Interpreter* interpreter, Toy_Literal* drivePathLiteral);
+LIB_RUNNER_API Toy_Literal Toy_getFilePathLiteral(Toy_Interpreter* interpreter, Toy_Literal* drivePathLiteral);