求解:修改DLL文件中的函数
我现在要用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个数据的数组指针 不知道怎么实现的?为什么这地方没有对它进行返回,怎么得到它的返回值啊?
问题写的有点繁琐,麻烦各位高手给予指点~不胜感激!