动态链接库(DLL)加载失败 126

amao02 2010-09-16 10:01:29
我有个动态库,程序中动态加载。但是加载失败了,getlasterror() 返回 126,动态库依赖,路径都好着呢! 我把代码换个位置,竟然加载成功了。(就在同一代码段,往上移几行,竟然加载成功了,(中间就是几个if判断)。) 高手指点一下,这怎么回事啊?谢谢~!
...全文
2006 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
龙哥依旧 2010-09-17
  • 打赏
  • 举报
回复
建议用绝对路径!
amao02 2010-09-17
  • 打赏
  • 举报
回复
ss;
BOOL tf = ss.LoadDLL("6S_DLL.dll");
加载dll 写在一个类 SixS 里面的;就是调用了LoadLibrary()

amao02 2010-09-17
  • 打赏
  • 举报
回复
// TODO: Add your control notification handler code here
//check the input paramters
UpdateData();
ShowWindow(SW_HIDE);
SixS ss;
BOOL tf = ss.LoadDLL("6S_DLL.dll");//就这个位置可以,往下面移几行就不行了
if(!tf)
{
int err = GetLastError();
AfxMessageBox("加载DLL失败!");
PostMessage(WM_CLOSE,0,0);
return ;
}

if( m_strInFile ==_T("")|| m_strInFile ==_T("")
|| m_inSpatialRes == 0.0 || m_outSpatialRes ==0.0
|| m_inSpectralRes == 0.0 || m_outSpectralRes ==0.0)
{
AfxMessageBox("Invalid Parameters!");
PostMessage(WM_CLOSE,0,0);
return;
}

if(header.Interleave!=0)
{
AfxMessageBox("Only BSQ Interleave Supported!");
PostMessage(WM_CLOSE,0,0);
return;
}
//check the waveLength data
if(header.pWavelength == NULL)
{
CDialogWaveFile dlgwave;
if(dlgwave.DoModal() == IDOK)
{
UpdateData();
m_WaveFile = dlgwave.m_WaveFile;
}
if(m_WaveFile==_T(""))
{
AfxMessageBox("Invalid WaveLength File!");
PostMessage(WM_CLOSE,0,0);
return;
}
}

//define transfor parameters
SimulationInfo *pParams = new SimulationInfo();
pParams->pSimulation = this;
pParams->pProgress = NULL;
pParams->pSixSACM = NULL;

//6s atmosphere correction
if(m_Atomsphere)
{
CSixSAtomsphereCorrection *pSixSACM = new CSixSAtomsphereCorrection();
CSixSAtomsphereCorrection sixSACM;
if(sixSACM.DoModal() ==IDOK)
{
UpdateData();
*pSixSACM = sixSACM;
pParams->pSixSACM = pSixSACM;
}
}

//Create Progress Bar...
pParams->pProgress = new CSixSACMProgress();
pParams->pProgress->Create(IDD_DIALOG_6SACM_PROGRESS,this->GetParent());
pParams->pProgress->ShowWindow(SW_SHOW);

CWinThread *pThread = AfxBeginThread(SimulationThreadProc,pParams,THREAD_PRIORITY_HIGHEST);
amao02 2010-09-17
  • 打赏
  • 举报
回复
就是我在对话框的button相应函数中去加载dll,是不是这个有问题?(关键有时候不用加载,放在这里面)
Peter_Wang 2010-09-16
  • 打赏
  • 举报
回复
IDE调试时,和直接双击运行,两个得当前路径是不同的
Eleven 2010-09-16
  • 打赏
  • 举报
回复
126 The specified module could not be found.
路径不对吧。。。
水凝冰释 2010-09-16
  • 打赏
  • 举报
回复
我也遇到过这种问题,路径都是对的,就是加载不上,可能当时水平有限。
我觉得动态加载不是很好,后来很少这样用了。
fairyprince 2010-09-16
  • 打赏
  • 举报
回复
如果确定排除依赖问题,

查看跟踪一下,加载之前做了什么,
有可能之前的操作,有内存泄露,破坏了上下文环境
fandh 2010-09-16
  • 打赏
  • 举报
回复
楼主贴代码!
另外,楼主是不是一个是调试,一个是直接运行?
这两个环境也是不一样的!
amao02 2010-09-16
  • 打赏
  • 举报
回复
我用depends查看依赖都好着 啊,环境变量?
zhaohongbo83 2010-09-16
  • 打赏
  • 举报
回复
动态库依赖可能还跟环境变量有关!
重复的昵称嘛 2010-09-16
  • 打赏
  • 举报
回复
应该是路径的问题,在那几个if中路径估计改变了。
wwwwadada 2010-09-16
  • 打赏
  • 举报
回复
学习中我是新手啊

15,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧