Use dlerror() to clear any error before retrying with the mangled name

Thanks to Catalin Ontanu for reporting this, and then doing more
investigation to find and test the solution.
diff --git a/deodexerant/deodexerant.c b/deodexerant/deodexerant.c
index e4b89a2..1cadee9 100644
--- a/deodexerant/deodexerant.c
+++ b/deodexerant/deodexerant.c
@@ -48,18 +48,20 @@
 	void *libdvm = dlopen("libdvm.so", RTLD_LAZY);
 
 	if (libdvm == NULL) {
-		printf("Failed to load libdvm\n");
+		printf("Failed to load libdvm: %s\n", dlerror());
 		return;
 	}
 
 	dvmGetInlineOpsTablePtr dvmGetInlineOpsTable = dlsym(libdvm, "dvmGetInlineOpsTable");
 
 	if (dvmGetInlineOpsTable == NULL) {
+		// clear the error, and retry with the c++ mangled name
+		dlerror();
 		dvmGetInlineOpsTable = dlsym(libdvm, "_Z20dvmGetInlineOpsTablev");
 	}
 
 	if (dvmGetInlineOpsTable == NULL) {
-		printf("Failed to load dvmGetInlineOpsTable\n");
+		printf("Failed to load dvmGetInlineOpsTable: %s\n", dlerror());
 		dlclose(libdvm);
 		return;
 	}
@@ -67,11 +69,13 @@
 	dvmGetInlineOpsTableLengthPtr dvmGetInlineOpsTableLength = dlsym(libdvm, "dvmGetInlineOpsTableLength");
 
 	if (dvmGetInlineOpsTableLength == NULL) {
+		// clear the error, and retry with the c++ mangled name
+		dlerror();
 		dvmGetInlineOpsTableLength = dlsym(libdvm, "_Z26dvmGetInlineOpsTableLengthv");
 	}
 
 	if (dvmGetInlineOpsTableLength == NULL) {
-		printf("Failed to load dvmGetInlineOpsTableLength\n");
+		printf("Failed to load dvmGetInlineOpsTableLength: %s\n", dlerror());
 		dlclose(libdvm);
 		return;
 	}