void WndDimReplaceCMD(db_drawing* pdbdrawing,  cmd_dimlastpt pt)
{ char src[20]  = "";
char dest[20] = "";
typedef bool (*lpFun)(LPCTSTR src,LPCTSTR dest);
HINSTANCE hDll; 
hDll = LoadLibrary("DimReplaceres.dll");
if (NULL==hDll)
{
//MessageBox("DLL加载失败"); }
lpFun pCMD = (lpFun)GetProcAddress(hDll,"DimDlg"); if (NULL == pCMD)
{ //MessageBox("DLL中函数寻找失败");  } pCMD(src, dest);
         //到这里就没有值了!!!!!!!!!!! sds_printf("%S %S", src, dest);}

解决方案 »

  1.   

    先将FreeLibrary注掉试一下,断点打在lpFun pCMD = (lpFun)GetProcAddress(hDll,"DimDlg");
    看有什么结果
      

  2.   

    应该是在 DimDlg 函数里 (如果是多线程的,就有可能是在别的地方)另外一变量越量使用了,导致把src清成了空值。 极有可能是使用了诸如 memcpy, memset, ZeroMemory 等这样的内存操作函数,并且操作的长度超出了它所操作的变量的范围。你可以跟踪监控一下src的内存变化。( Menu: View - Debug Windows - Memory )