本帖最后由 xxxchengkai 于 2011-04-20 16:20:31 编辑

解决方案 »

  1.   

    TestMemory tm=(TestMemory )GetProcAddress(dllhandle,"TM");
    int abc;
    DWORD def;
    DWORD len=4;
    BOOL flag=tm(hd,(LPVOID)0x018A8684,(LPVOID)&abc,len,&def);
    -------------------------------
    Debug下调试一下tm有值没有,是否不会NULL呢?
    另外下面的函数调用
    tm(hd,(LPVOID)0x018A8684,(LPVOID)&abc,len,&def);
    这个是什么?
      

  2.   

    tm有值,非空,(LPVOID)0x018A8684是内存地址
      

  3.   

    Debug时发现,abc和def都对,就是在程序运行时有异常窗口,而release版本abc和def都不对,并且直接非法操作
    ,请大侠们降临啊
      

  4.   

    function {TestMem}TM(hProcess:THANDLE;lpAddress:pointer;lpBuffer:pointer;nSize:DWORD;var NumberOfDeal:DWORD):BOOL;cdecl;
    typedef BOOL (WINAPI *TestMemory)(HANDLE,LPVOID,LPVOID,DWORD,LPDWORD);调用约定不对吧,一个是cdecl一个又是WINAPI,WINAPI相当于PASCAL的。cdecl去掉试试吧。