代码拉取完成,页面将自动刷新
同步操作将从 朝阳君/comLib 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
#include "CLibrary.h"
#include <QDebug>
/// 跨平台宏定义,支持不同平台条件编译
#if defined(_WIN32)
# include <windows.h>
#elif defined(__linux)
# include <dlfcn.h>
#endif
std::wstring StringToWString(const std::string & s);
std::string WChar2Ansi(LPCWSTR pwszSrc);
CLibrary::CLibrary(const std::string & fileName) : fileName_(fileName), isLoad_(false)
{
}
CLibrary::~CLibrary()
{
}
void * CLibrary::resolve(const char * symbol)
{
if (nullptr == lib_ || nullptr == symbol) { return nullptr; }
#if defined(_WIN32)
return (void *)GetProcAddress((HMODULE)lib_, symbol);
#elif defined(__linux)
return dlsym(lib_, symbol);
#endif
}
bool CLibrary::load()
{
#if defined(_WIN32)
lib_ = LoadLibrary(StringToWString(fileName_).c_str());
# define libErrorText ""
#elif defined(__linux)
lib_ = dlopen(fileName_.c_str(), RTLD_LAZY);
# define libErrorText dlerror()
#endif
if (nullptr == lib_) { qDebug() << "Cannot load lib:" << fileName_.c_str() << libErrorText; }
else
{
isLoad_ = true;
}
return isLoad_;
}
bool CLibrary::isLoaded() const
{
return isLoad_;
}
void CLibrary::setFileName(const std::string & fileName)
{
fileName_ = fileName;
}
std::string CLibrary::fileName() const
{
return fileName_;
}
// wstring转换成string
std::string WChar2Ansi(LPCWSTR pwszSrc)
{
int nLen = WideCharToMultiByte(CP_ACP, 0, pwszSrc, -1, nullptr, 0, nullptr, nullptr);
if (nLen <= 0) return std::string("");
char * pszDst = new char[nLen];
if (nullptr == pszDst) return std::string("");
WideCharToMultiByte(CP_ACP, 0, pwszSrc, -1, pszDst, nLen, nullptr, nullptr);
pszDst[nLen - 1] = 0;
std::string strTemp(pszDst);
delete[] pszDst;
return strTemp;
}
// string转换车wstring
std::wstring StringToWString(const std::string & s)
{
std::wstring wszStr;
int nLength = MultiByteToWideChar(CP_ACP, 0, s.c_str(), -1, nullptr, 0);
wszStr.resize(nLength);
LPWSTR lpwszStr = new wchar_t[nLength];
MultiByteToWideChar(CP_ACP, 0, s.c_str(), -1, lpwszStr, nLength);
wszStr = lpwszStr;
delete[] lpwszStr;
return wszStr;
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。