如题,调用一个DLL,如果我当前执行文件在H盘,我用动态调研hMod2 = LoadLibrary(_T("C:\\imobi.dll"));这样就失败,路径绝对没错,而且DLL也就在指定位置,但是我要是hMod2 = LoadLibrary(_T("imobi.dll"));
然后把DLL考到EXE同目录下就成功,所有DLL依赖的DLL是一起拷贝的,用getlasterror报错126,找不到指定模块,求大神帮忙解决下,拜谢
然后把DLL考到EXE同目录下就成功,所有DLL依赖的DLL是一起拷贝的,用getlasterror报错126,找不到指定模块,求大神帮忙解决下,拜谢
解决方案 »
- nf是个对象,EMPTY_Operation是个成员函数,调用这个函数时,想给n赋值为0,k赋值为10,但是调试的时候,k值和n值都不对,为什么呢?
- CPen *newPen; newPen.CreatePen(PS_SOLID,0,RGB(255,0,0));dc.SelectObject(&newPen)
- VC++ 能开发出 VC++吗?
- 双击 控件 弹出 类向导对话框?
- 为啥我调用CreateJobObject函数失败
- directshow应用中的怪问题,高手请进!分有的是,up有分!
- 谁能告诉我,如何为我在vc里用CString a;然后写a.后没有自动弹出的函数列表?
- 关于在CDialog类的派生类中内存管理的问题,为什么我delete总是出debug错误?
- activex中加入mediaplay控件报错
- 《Visual C++ 技术内幕》中的一个小问题。
- opencv新手,运动目标检测与追踪,求讲解!!!
- ftp命令
{
TTS(pszModuleName && pszModuleName[0],
TR(L"本地注册加载 %s 模块中……", pszModuleName),
TR(L"本地注册加载当前模块中……"));
HMODULE hModule = NULL;
WCHAR szModulePath[MAX_PATH] = { 0 };
if (::CreateApplicationBase(szModulePath, ARRAYSIZE(szModulePath), pszModuleName))
{
if (bSetDllDirectory)
{
WCHAR szDllDirectory[MAX_PATH];
DWORD nDllDirectory = ::GetDllDirectoryW(ARRAYSIZE(szDllDirectory), szDllDirectory);
WCHAR szCurrentDirectory[MAX_PATH];
GetDirectoryFromFileName(szCurrentDirectory, ARRAYSIZE(szCurrentDirectory), szModulePath);
if (::SetDllDirectoryW(szCurrentDirectory))
{
if (szModulePath[0])
{
hModule = LoadLibraryW(szModulePath);
if (!hModule)
{
DHR(L"LoadLibrary", GetLastError());
DR(L"LoadLibray %s.", szModulePath);
}
}
else
{
GetModuleHandleExW(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS, (LPCWSTR)LoadDynamicModule, &hModule);
if (!hModule)
{
DHR(L"GetModuleHandleEx", GetLastError());
}
}
if (nDllDirectory)
{
::SetDllDirectoryW(szDllDirectory);
}
else
{
::SetDllDirectoryW(NULL);
}
}
}
else
{
if (szModulePath[0])
{
hModule = LoadLibraryW(szModulePath);
if (!hModule)
{
DHR(L"LoadLibrary", GetLastError());
DR(L"LoadLibray %s.", szModulePath);
}
}
else
{
GetModuleHandleExW(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS, (LPCWSTR)LoadDynamicModule, &hModule);
if (!hModule)
{
DHR(L"GetModuleHandleEx", GetLastError());
}
}
}
}
TTS(szModulePath[0],
TR(L"本地注册加载 %s 模块%s完成。", szModulePath, hModule ? L"成功" : L"失败"),
TR(L"本地注册加载当前模块%s完成。", hModule ? L"成功" : L"失败"));
return hModule;
}
被注入的DirectX 程序可能在任意位置,而注入代码在我的程序目录。
此时,需要使用一个不依赖于自己的任何其他 DLL 的 DLL。这个 DLL 使用绝对路径加载。
然后,在这个 DLL 中设置 DLL 的加载环境,加载其他的 DLL 。
这些后加载的 DLL 可以说其他人提供的 DLL 。