提交 4bd0c4c5 编写于 作者: P peizhilin

test=develop

上级 dce03fe7
...@@ -24,42 +24,42 @@ ...@@ -24,42 +24,42 @@
#include "glog/logging.h" #include "glog/logging.h"
#if !defined(_WIN32) #if !defined(_WIN32)
#define UNUSED __attribute__((unused)) #define UNUSED __attribute__((unused))
#include <dlfcn.h> // dladdr #include <dlfcn.h> // dladdr
#include <execinfo.h> // backtrace #include <execinfo.h> // backtrace
#include <sys/stat.h> #include <sys/stat.h>
#include <algorithm> // std::accumulate #include <algorithm> // std::accumulate
#else #else
#include <stdio.h> #include <stdio.h>
#include <io.h> // _popen, _pclose #include <io.h> // _popen, _pclose
#include <windows.h> #include <windows.h>
#include <numeric> // std::accumulate in msvc #include <numeric> // std::accumulate in msvc
// windows version of __attribute__((unused)) // windows version of __attribute__((unused))
#define UNUSED __pragma(warning(suppress : 4100)) #define UNUSED __pragma(warning(suppress : 4100))
#ifndef S_ISDIR // windows port for sys/stat.h #ifndef S_ISDIR // windows port for sys/stat.h
#define S_ISDIR(mode) (((mode)&S_IFMT) == S_IFDIR) #define S_ISDIR(mode) (((mode)&S_IFMT) == S_IFDIR)
#endif // S_ISDIR #endif // S_ISDIR
static void *dlsym(void *handle, const char *symbol_name) { static void *dlsym(void *handle, const char *symbol_name) {
FARPROC found_symbol; FARPROC found_symbol;
found_symbol = GetProcAddress((HMODULE)handle, symbol_name); found_symbol = GetProcAddress((HMODULE)handle, symbol_name);
if (found_symbol == NULL) { if (found_symbol == NULL) {
throw std::runtime_error(std::string(symbol_name) + " not found."); throw std::runtime_error(std::string(symbol_name) + " not found.");
} }
return reinterpret_cast<void *>(found_symbol); return reinterpret_cast<void *>(found_symbol);
} }
static void *dlopen(const char *filename, int flag) { static void *dlopen(const char *filename, int flag) {
std::string file_name(filename); std::string file_name(filename);
file_name.replace(0, file_name.size() - 1, '/', '\\'); file_name.replace(0, file_name.size() - 1, '/', '\\');
HMODULE hModule = LoadLibrary(file_name.c_str()); HMODULE hModule = LoadLibrary(file_name.c_str());
if (!hModule) { if (!hModule) {
throw std::runtime_error(file_name + " not found."); throw std::runtime_error(file_name + " not found.");
} }
return reinterpret_cast<void *>(hModule); return reinterpret_cast<void *>(hModule);
} }
#endif // !_WIN32 #endif // !_WIN32
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册