我的程序调用了一个dll,通过接口,调用函数来实现功能。
代码如下;
typedef bool (CALLBACK* GetClientClass)(CeTechClient*& pClass); CString strDllPath;
xds_getXtEnvironment("edms\\eTechClient.dll", sptFileName);//调用dll
strDllPath.Format("%s", sptFileName);

m_hModule = ::LoadLibrary(strDllPath);
if(m_hModule != NULL)
{
GetClientClass lpFunc = NULL;
lpFunc = (GetClientClass)GetProcAddress(m_hModule, _T("GetClientClass"));

if (lpFunc == NULL)
{
::FreeLibrary(m_hModule);
m_hModule = NULL;
}
else
{
if (!lpFunc(m_pClient))//实例化对象
{
::FreeLibrary(m_hModule);
m_hModule = NULL;
}
}

if (!m_pClient->IsConnected()) //链接服务器
{
BOOL bConnectedServer = false;
while (bConnectedServer == false)
{
if (m_pClient->Connect())//链接服务器
{
bConnectedServer = true;
}
else
{
if (IDNO == AfxMessageBox("无法连接服务器,是否重新指定服务器?",MB_YESNO))
{
return false;
}
}
}
}编译连接都可以通过,但是执行的时候,就会弹出错误信息框:socket notification sink:××.exe 应用程序错误。 "****"指令引用的"****"内存,该内存不能为read。这个错误怎么回事,我对socket编程这方面不是很明白,请大家帮忙。

解决方案 »

  1.   

    很明显是DLL里的无效指针的问题
      

  2.   

    加载的dll本身应该是没问题的,因为用在其它程序上,是可以通过的。
      

  3.   

    没有消息循环的支持dll里面有初始化函数什么的吗?需要传个有消息循环的句柄
      

  4.   

    继续这个问题,执行到m_pClient->Connect())这句的时候,报错:Unhandled exception in ***.exe(Mfc71.dll):0xc000000005:Access Violation再次请教跟踪程序的时候,所有指针都已经赋值