[求助]高手快来帮忙呀!有关dll的问题
高手快来帮忙呀,我用vc 编了一段程序,做成了dll,然后在vb里面调用,可是数据出现问题。其中的结构体变量的值是有调用记事本来赋值的。运行显示可以赋值,只是似乎随时就会释放了,无法进行下面的运算。我试了一下在没做成DLL时,vc自身运行,数据不会随时释放的。下面是代码,大家帮我看看是怎么回事。该怎样改.大家别把我的程序看的很麻烦呀,其实很简单的一段,只是我把各个文件都写来了,以让大家帮我分析一下。拜托了,谢谢!
头文件(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 hly
vb当中:
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