我的Dll是用VC写的,有个浮点型的参数,在Delphi里是Single类型,在VC里是float,(没用MFC)在debug版的Dll里,完全正常,但在Release版的Dll里却有问题:
 如果有小数,那正常,如果是整数,值会小100,比如:我delphi里的数是2019,那到了C的DLL里变成了1919了,小于100的又不会变的。
代码太长,加上又是公司的东西,不好帖。

解决方案 »

  1.   

    提示:1.在Debug版中NULL为0XCC,R版中为0
          2.C中int/int为 int
      

  2.   

    主程序:
        function T(f: single): single; cdecl;
            external 'TestD.dll' name 'Test';{$R *.dfm}procedure TfrmTest.Button1Click(Sender: TObject);
    begin
        Edit2.Text := FloatToStr(T(StrToFloat(Edit1.Text)));
    end;DLL:
    #include "StdAfx.h"
    #define DllImport   extern "C" __declspec(dllimport)
    #define DllExport   extern "C" __declspec(dllexport)DllExport float Test(float f);
    float Test(float f)
    {
    return f;
    }不会出错,一定是运算出错了。
      

  3.   

    后面加了个测试函数它就不出错了,
    更加迷惑◎◎◎◎◎
    结帖:
     ttzzj(标识符) http://expert.csdn.net/Expert/topic/2659/2659899.xml?temp=.7382929
    把分也领了