本帖最后由 miaoyuli 于 2011-09-07 15:04:10 编辑

解决方案 »

  1.   

    function GetItem(pvSelect:pointer;nItem:integer):DWORD;cdecl;
      

  2.   

    学习学习先
    继续顶一下
    顶顶帖子高手们
    也请多多赐教
    http://topic.csdn.net/u/20110709/12/3ec63017-cef8-41e0-a524-c9b9dfe56d5c.html
    http://topic.csdn.net/u/20110611/12/3258c959-4f28-46b7-b5d6-46135d73036b.html
    http://topic.csdn.net/u/20110722/14/89f7440b-c4d7-4c9a-a4bb-a503f5135db2.html
    http://topic.csdn.net/u/20110729/10/a7bfaf06-0cf9-4580-8e91-d4e0b92066c6.htmlhttp://topic.csdn.net/u/20110811/16/e56e7cc1-d8c9-40af-92e3-c24ca103d17d.html
    http://topic.csdn.net/u/20110830/13/dfae4ca5-d2b9-4889-8a3c-6f7fb61936c9.html
    http://topic.csdn.net/u/20110831/17/427b6ab0-66c6-4f33-af26-ebd27b0dc541.html
    http://topic.csdn.net/u/20110901/09/83c2c668-cbe6-4db9-966d-bf2f47456811.html
    http://topic.csdn.net/u/20110905/12/a1161adb-8e5d-491a-b302-c9722edf2dab.html
    http://topic.csdn.net/u/20110906/10/86d49517-b7a6-4fae-982b-478d2d6e2a23.html
      

  3.   


    貌似确实是调用协议的问题,C默认的是cdecl,楼主用的是标准调用协议stdcall,导致堆栈出现问题了。
      

  4.   

    把stdcall改成cdecl确实有用,解决了我程序运行完内存溢出的问题,但是调用DLL返回值是乱码的问题还是没有解决,我现在不知道结构体定义环节还是程序中哪个环节仍然存在问题。
      

  5.   

    你在C中这个结构体大小为12
    delphi中为8当然有问题了type
      PItemSelect = ^TItemSelect;
      TItemSelect = record
      wID: WORD;
      pValue: pointer;
      wValueLen: WORD;
      end;
    将delphi中定义的packed去掉大小就一样了