From 4aa9f83100e93b2350242acd06c517db0259b49b Mon Sep 17 00:00:00 2001 From: Alexander Smorkalov Date: Thu, 26 Dec 2013 10:16:29 +0400 Subject: [PATCH] Dynamic CUDA support library name fixed. Additional error messages added. --- modules/core/src/gpumat.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/modules/core/src/gpumat.cpp b/modules/core/src/gpumat.cpp index 94bb548..cc97898 100644 --- a/modules/core/src/gpumat.cpp +++ b/modules/core/src/gpumat.cpp @@ -93,6 +93,9 @@ static GpuFactoryType gpuFactory = NULL; static DeviceInfoFactoryType deviceInfoFactory = NULL; # if defined(__linux__) || defined(__APPLE__) || defined (ANDROID) + +const std::string DYNAMIC_CUDA_LIB_NAME = "libopencv_dynamicuda.so"; + # ifdef ANDROID static const std::string getCudaSupportLibName() { @@ -144,7 +147,7 @@ static const std::string getCudaSupportLibName() LOGD("Libraries folder found: %s", pathBegin); fclose(file); - return std::string(pathBegin) + "/libopencv_core_cuda.so"; + return std::string(pathBegin) + DYNAMIC_CUDA_LIB_NAME; } fclose(file); LOGE("Could not find library path"); @@ -165,7 +168,7 @@ static const std::string getCudaSupportLibName() # else static const std::string getCudaSupportLibName() { - return "libopencv_core_cuda.so"; + return DYNAMIC_CUDA_LIB_NAME; } # endif @@ -173,13 +176,18 @@ static bool loadCudaSupportLib() { void* handle; const std::string name = getCudaSupportLibName(); + dlerror(); handle = dlopen(name.c_str(), RTLD_LAZY); if (!handle) + { + LOGE("Cannot dlopen %s: %s", name.c_str(), dlerror()); return false; + } deviceInfoFactory = (DeviceInfoFactoryType)dlsym(handle, "deviceInfoFactory"); if (!deviceInfoFactory) { + LOGE("Cannot dlsym deviceInfoFactory: %s", dlerror()); dlclose(handle); return false; } @@ -187,6 +195,7 @@ static bool loadCudaSupportLib() gpuFactory = (GpuFactoryType)dlsym(handle, "gpuFactory"); if (!gpuFactory) { + LOGE("Cannot dlsym gpuFactory: %s", dlerror()); dlclose(handle); return false; } -- 2.7.4