注册 登录
编程论坛 VC++/MFC

求解:修改DLL文件中的函数

njutmk 发布于 2011-11-23 20:47, 845 次点击
  我现在要用LabVIW调用一个动态库,可是动态库的一个输出是指针类型,并且指针指向一个26个数据的数组,在LabVIW中无法得到所有这26个数据,只能在VC下面对DLL进行修正。但是无论我怎么改,最后都好像函数是错误的。
   我是在Win32 Dynamic-Link Library的工程下修改的。具体改法:
    uint32 ES4xx_GetDeviceChannels        ( deviceHandle device, uint32* pBufferSize, channelHandle* pBuffer )//返回值是一个0或者1   这样一个函数
    {
        uint32 result;
       uint32 numChannels;
        channelHandle* pChannels;  
        numChannels = 0;
        result = ES4xx_GetDeviceChannels( Device, &numChannels,NULL );//得到通道数,也就是 &numChannels输出端值   
         pChannels= (deviceHandle*) malloc( numChannels* sizeof(deviceHandle) );//---------------BB
     result = ES4xx_GetDeviceChannels ( Device, &numChannels, pChannels)//三个参数省略了
        pBuffer ++;
        return result;
    }   就到这,生成动态库,调用,和预想的结果差距太大,而且有时候LabVIW软件是立马被关掉。      
这里还有个疑问,原函数的一个参数channelHandle* pBuffer输入是让它等于一个malloc函数分配内存空间(BB处)      输出是指向26个数据的数组指针  不知道怎么实现的?为什么这地方没有对它进行返回,怎么得到它的返回值啊?

问题写的有点繁琐,麻烦各位高手给予指点~不胜感激!
0 回复
1