看来错误的来源是和参数的传递有关的!
我吧参数取消就没有问题了,一切正常,可是怎么能这样做呢?
我在vc和delhpi里面都明显是用stdcall或cdecl传递参数,可是还是
包错的,是不是在delphi的环境中还是需要加些什么别的设置呢?

解决方案 »

  1.   

    是不是Delphi的参数有String类型呢?如果有的话,改成PChar类型。
      

  2.   

    我的回答与上面Lin的回答有一点类似,可能是你在用DLL里面的函数时有以String类型作参数,如果是请用其它方法,如改为PCHAR型。这个问题我是一直的心病,我正在想方法解决这个问题。如果你能解决的话请不要忘记Email我一份
      

  3.   

    1。参数传递时使用了Delphi自定义的一些复杂变量,如AnsiString等
    2。Delphi的函数没有用stdcall方式来传递
    3。传值传递和传址传递的错误
      

  4.   

    我的确用了string做了参数!
    按了你们的要求我把它改成了PChar的类型,可还是错误,
    不过它的错误不太一样,这次是说模块bmpdll.dll中导致例外eedfa0eh的!
    我在vc定义的参数是用char *来定义有问题吗?
      

  5.   

    如果实在不行的话,我只好通过剪贴班传递参数的!
    如果各位曾经做过的,请给我mail一分啊,具体的做法!mail: [email protected]
      

  6.   

    sorry,已经好了!
    确实是用PChar就好了,刚才主要是没有想到在vc中
    给字符串赋值的时候竟然吃了一个"\"号!
      

  7.   

    欢迎访问 http://playyuer.to263.net
    VB、PB、Delphi 联合编程Delphi
    Unit1 代码:unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
    begin
    MessageDlg('This is a Delphi MessageDlg !',mtInformation,[mbOK],0);
    end;
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    self.Caption:='This is a Delphi Modal Form !';
    self.Button1.Caption:='This is a Delphi Button !';
    end;end.==========================
    VB call Delphi Dll code:
    '一定要声明为 Long,虽然在 Delphi Dll 定义的是 Procedure (过程)
    Private Declare Function ShowDelphiFormModal Lib "..\..\Project1.dll" () As Long
    Private Sub Command1_Click()
    ShowDelphiFormModal
    End Sub
    ==================
    PB call Delphi Dll Code:
    //'一定要声明为 Long,虽然在 Delphi Dll 定义的是 Procedure (过程)
    FUNCTION long ShowDelphiFormModal () LIBRARY "..\..\Project1.dll"
    ...
    ShowDelphiFormModal()