各位高手指点

时间:2021-06-12 10:49:09
我用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 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

5 个解决方案

#1


大家帮帮忙呀,不是一个复杂的程序的,只是所有文件我都写出来了而已。快点帮帮我呀。谢谢。

#2


关注一下

#3


怎么没人帮忙呀?拜托呀。

#4


哪儿出了问题?
晕哦!哪个数据不对?
顶下

#5


我详细说一下,有一段vc程序,里面含有一个头文件(定义一个结构体),一个子程序(用来调用记事本里的数据为结构体变量赋值),一个主程序利用结构体变量来计算别的模型,然后将这段vc程序做成一个dll,在vb里调用这个dll,可是从计算程序返回到vb里的数据不对,我查的是结构体变量的值根本没有参加计算过程,似乎传进的数据在调用完子程序后就没了,如果把结构体变量换成数组,结果就对了,请问是怎么回事?该怎么办呢?大家给点帮助。

#1


大家帮帮忙呀,不是一个复杂的程序的,只是所有文件我都写出来了而已。快点帮帮我呀。谢谢。

#2


关注一下

#3


怎么没人帮忙呀?拜托呀。

#4


哪儿出了问题?
晕哦!哪个数据不对?
顶下

#5


我详细说一下,有一段vc程序,里面含有一个头文件(定义一个结构体),一个子程序(用来调用记事本里的数据为结构体变量赋值),一个主程序利用结构体变量来计算别的模型,然后将这段vc程序做成一个dll,在vb里调用这个dll,可是从计算程序返回到vb里的数据不对,我查的是结构体变量的值根本没有参加计算过程,似乎传进的数据在调用完子程序后就没了,如果把结构体变量换成数组,结果就对了,请问是怎么回事?该怎么办呢?大家给点帮助。