我用vc 编了一段程序,做成了dll,然后在vb里面调用,可是数据出现问题,下面是代码,大家帮我看看是怎么回事。该怎样改.大家别把我的程序看的很麻烦呀,其实很简单的一段,只是我把各个文件都写来了,以让大家帮我分析一下。拜托了,谢谢!
头文件(mfs.h)里定义一个结构体:结构体里含有很多个成员,在此列举一个
#ifndef _mfs_
#define _mfs_
struct mfs
{
int mcw[5];
};
#endif函数get_data()用来向结构体变量赋值:
#include<iostream.h>
#include<fstream.h>
#include<windows.h>
#include"mfs.h";
int get_data(struct mfs mf)
{
ifstream input1;
static i,ret=0;
input1.open("D:/数据/rig.txt",ios::in);
if(!input1)
{
cout<<" rig.txt没打开"<<endl;
ret=5;
return(ret);
}
for(i=0;i<5;i++)
{
input1>>mf.mcw ;
}
input1.close();
return (ret);
}
下面是主运算函数hly():
#include <windows.h>
#include<iostream.h>
#include"mfs.h"
struct mfs mf;
int _stdcall hly(int szq[5])
{
extern int get_data(struct mfs mf);
static int i,ret=20;
int wyx[5];
ret=get_data(mf);
for(i=0;i<5;i++)
{
wyx=szq+mf.mcw;
}
return (wyx[2]);
}
MyDll.cpp文件:
#include <windows.h>
#include<iostream.h>
#include"mfs.h"
extern "C"_declspec(dllexport) int _stdcall hly(int szq[5]);
BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)
{
switch( ul_reason_for_call )
{
case DLL_PROCESS_ATTACH:case DLL_THREAD_ATTACH:case DLL_THREAD_DETACH:case DLL_PROCESS_DETACH: break;
}
return TRUE;
}
MyDll.def文件:
LIBRARY MyDLL
EXPORTS hlyvb当中:
Option Explicit
Private Declare Function hly Lib "MyDLL.dll" (ByRef ft As Long) As Long
Private Sub Command1_Click()
Dim b As Long
b = hly(ft(0))
Text1.Text = b
End sub
头文件(mfs.h)里定义一个结构体:结构体里含有很多个成员,在此列举一个
#ifndef _mfs_
#define _mfs_
struct mfs
{
int mcw[5];
};
#endif函数get_data()用来向结构体变量赋值:
#include<iostream.h>
#include<fstream.h>
#include<windows.h>
#include"mfs.h";
int get_data(struct mfs mf)
{
ifstream input1;
static i,ret=0;
input1.open("D:/数据/rig.txt",ios::in);
if(!input1)
{
cout<<" rig.txt没打开"<<endl;
ret=5;
return(ret);
}
for(i=0;i<5;i++)
{
input1>>mf.mcw ;
}
input1.close();
return (ret);
}
下面是主运算函数hly():
#include <windows.h>
#include<iostream.h>
#include"mfs.h"
struct mfs mf;
int _stdcall hly(int szq[5])
{
extern int get_data(struct mfs mf);
static int i,ret=20;
int wyx[5];
ret=get_data(mf);
for(i=0;i<5;i++)
{
wyx=szq+mf.mcw;
}
return (wyx[2]);
}
MyDll.cpp文件:
#include <windows.h>
#include<iostream.h>
#include"mfs.h"
extern "C"_declspec(dllexport) int _stdcall hly(int szq[5]);
BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)
{
switch( ul_reason_for_call )
{
case DLL_PROCESS_ATTACH:case DLL_THREAD_ATTACH:case DLL_THREAD_DETACH:case DLL_PROCESS_DETACH: break;
}
return TRUE;
}
MyDll.def文件:
LIBRARY MyDLL
EXPORTS hlyvb当中:
Option Explicit
Private Declare Function hly Lib "MyDLL.dll" (ByRef ft As Long) As Long
Private Sub Command1_Click()
Dim b As Long
b = hly(ft(0))
Text1.Text = b
End sub
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货