vc dll文件中函数返回值在vb中调用出现异常?
#include <windows.h>
#include "7012Demo.h"
#include "Isa7012.h"
#pragma comment(lib, "ISA7012DLL.lib")
BOOL IsIniSuccess = FALSE ;
BOOL Ini7012(DWORD hwnd)
{
AD7012_WINCTRL_STRUCT ddd;
memset( &ddd, 0, sizeof(AD7012_WINCTRL_STRUCT) );
ddd.m_ADType = 1;
ddd.m_BufferBlock = 4;
ddd.m_ClkSrc = 0;
ddd.m_EndChn = 15;
ddd.m_hWnd = hwnd;
ddd.m_StartChn = 0;
ddd.m_StartType = 0;
ddd.m_Timer0Val = 200;
ddd.m_Timer1Val = 20;
ddd.m_Timer2Val = 20;
//ddd.m_IntFlag = 0;
if ( Isa7012_Open(0) )
{
//设备已成功打开
}
else
{
return FALSE;
}
if ( Isa7012_IsOpen(0) )
{
//打开Isa7012
}
else
{
return FALSE;
}
if ( Isa7012_ADCtrl(0 , &ddd))
{
//初始化正确
}
else
{
return FALSE;
}
Isa7012_StartAD(0);
}
//int WINAPI DllMain (HINSTANCE hInstance, DWORD fdwReason, PVOID pvReserved)
//{
//return TRUE ;
//}
__stdcall int CALLBACK Compare (int a,int b)
{
if(a>=b)
return a;
else
return b;
};
__stdcall float CALLBACK Friction (DWORD hwnd)
{
if ( !IsIniSuccess )
{
if (Ini7012(hwnd))
{
IsIniSuccess = TRUE ;
}
else
{
IsIniSuccess = FALSE ;
return 110;
}
}
float volL = 0.0f;
WORD dddd;
if(!Isa7012_SoftADGetVal(0,4,&dddd))
{
return -50;
}
volL = dddd & 0xFFF;
volL=((volL / 4095 * 20 - 3) * 100 / 15);
return volL;
};
下面是在vb中的程序:大家帮忙看看什么情况
Private Declare Function Friction Lib "C:\Documents and Settings\Administrator\桌面\dllvbdemo\7012Demo.dll" _
() As Long
Private Declare Function Compare Lib "C:\Documents and Settings\Administrator\桌面\dllvbdemo\7012Demo.dll" _
(ByVal CompareA As Integer, ByVal CompareB As Integer) As Integer
Dim i As Single
Private Sub Form_Load() '窗体加载
i = Friction()
End Sub
在vc中返回值volL为46.2542
在vb中获得的值为36