summaryrefslogtreecommitdiff
path: root/Source/Core/Common/Src/DynamicLibrary.cpp
diff options
context:
space:
mode:
authorhrydgard <hrydgard@gmail.com>2008-12-25 15:56:36 +0000
committerhrydgard <hrydgard@gmail.com>2008-12-25 15:56:36 +0000
commitdcc48d6c417192dec95aa0d0562d6cc2f3cfa18a (patch)
treef64ccb07691d1df7c508403421655d882086b49d /Source/Core/Common/Src/DynamicLibrary.cpp
parent3fd665502e7956ebd97391c0f4cc907d70358968 (diff)
just a bunch of random code cleanup i did on the train bored, plus a d3d implementation of NativeVertexFormat which isn't actually used yet.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1658 8ced0084-cf51-0410-be5f-012b33b47a6e
Diffstat (limited to 'Source/Core/Common/Src/DynamicLibrary.cpp')
-rw-r--r--Source/Core/Common/Src/DynamicLibrary.cpp41
1 files changed, 21 insertions, 20 deletions
diff --git a/Source/Core/Common/Src/DynamicLibrary.cpp b/Source/Core/Common/Src/DynamicLibrary.cpp
index 84d9816f1d..b3c7faf728 100644
--- a/Source/Core/Common/Src/DynamicLibrary.cpp
+++ b/Source/Core/Common/Src/DynamicLibrary.cpp
@@ -24,6 +24,7 @@
#endif
#include "Common.h"
+#include "FileUtil.h"
#include "StringUtil.h"
#include "DynamicLibrary.h"
@@ -32,11 +33,10 @@ DynamicLibrary::DynamicLibrary()
library = 0;
}
-
std::string GetLastErrorAsString()
{
#ifdef _WIN32
- LPVOID lpMsgBuf = 0;
+ LPVOID lpMsgBuf = 0;
DWORD error = GetLastError();
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
@@ -64,13 +64,11 @@ std::string GetLastErrorAsString()
#endif
}
-
-// ------------------------------------------------------------------
-/* Loading means loading the dll with LoadLibrary() to get an instance to the dll.
- This is done when Dolphin is started to determine which dlls are good, and
- before opening the Config and Debugging windows from Plugin.cpp and
- before opening the dll for running the emulation in Video_...cpp in Core. */
-// -----------------------
+// Loading means loading the dll with LoadLibrary() to get an instance to the dll.
+// This is done when Dolphin is started to determine which dlls are good, and
+// before opening the Config and Debugging windows from Plugin.cpp and
+// before opening the dll for running the emulation in Video_...cpp in Core.
+// Since this is fairly slow, TODO: think about implementing some sort of cache.
int DynamicLibrary::Load(const char* filename)
{
if (!filename || strlen(filename) == 0)
@@ -80,7 +78,6 @@ int DynamicLibrary::Load(const char* filename)
return 0;
}
LOG(MASTER_LOG, "Trying to load library %s", filename);
-
if (IsLoaded())
{
LOG(MASTER_LOG, "Trying to load already loaded library %s", filename);
@@ -93,9 +90,17 @@ int DynamicLibrary::Load(const char* filename)
library = dlopen(filename, RTLD_NOW | RTLD_LOCAL);
#endif
- if (!library) {
+ if (!library)
+ {
LOG(MASTER_LOG, "Error loading DLL %s: %s", filename, GetLastErrorAsString().c_str());
- PanicAlert("Error loading DLL %s: %s\n", filename, GetLastErrorAsString().c_str());
+ if (File::Exists(filename))
+ {
+ PanicAlert("Error loading DLL %s: %s\n\nAre you missing SDL.DLL or another file that this plugin may depend on?", filename, GetLastErrorAsString().c_str());
+ }
+ else
+ {
+ PanicAlert("Error loading DLL %s: %s\n", filename, GetLastErrorAsString().c_str());
+ }
return 0;
}
@@ -108,11 +113,9 @@ int DynamicLibrary::Unload()
{
int retval;
if (!IsLoaded()) {
- LOG(MASTER_LOG, "Error unloading DLL %s: not loaded", library_file.c_str());
PanicAlert("Error unloading DLL %s: not loaded", library_file.c_str());
return 0;
}
-
#ifdef _WIN32
retval = FreeLibrary(library);
@@ -120,8 +123,6 @@ int DynamicLibrary::Unload()
retval = dlclose(library)?0:1;
#endif
if (!retval) {
- LOG(MASTER_LOG, "Error unloading DLL %s: %s", library_file.c_str(),
- GetLastErrorAsString().c_str());
PanicAlert("Error unloading DLL %s: %s", library_file.c_str(),
GetLastErrorAsString().c_str());
}
@@ -135,8 +136,8 @@ void* DynamicLibrary::Get(const char* funcname) const
void* retval;
if (!library)
{
- LOG(MASTER_LOG, "Can't find function %s - Library not loaded.");
- PanicAlert("Can't find function %s - Library not loaded.");
+ PanicAlert("Can't find function %s - Library not loaded.");
+ return NULL;
}
#ifdef _WIN32
retval = GetProcAddress(library, funcname);
@@ -145,8 +146,8 @@ void* DynamicLibrary::Get(const char* funcname) const
#endif
if (!retval) {
- LOG(MASTER_LOG, "Symbol %s missing in %s (error: %s)\n", funcname, library_file.c_str(), GetLastErrorAsString().c_str());
- PanicAlert("Symbol %s missing in %s (error: %s)\n", funcname, library_file.c_str(), GetLastErrorAsString().c_str());
+ LOG(MASTER_LOG, "Symbol %s missing in %s (error: %s)\n", funcname, library_file.c_str(), GetLastErrorAsString().c_str());
+ PanicAlert("Symbol %s missing in %s (error: %s)\n", funcname, library_file.c_str(), GetLastErrorAsString().c_str());
}
return retval;