dll的引出函数中怎样传递数组?解决方法
dll的引出函数中怎样传递数组?
问题如上,调试了半天发现引出函数中的数组传递不对。
定义:extern "C" __declspec(dllexport) __stdcall int GetTU( unsigned char buffer[BUFFLEN],....);
用静态方式调用:extern "C" __declspec(dllimport) __stdcall int GetTU(unsigned char,...);
i=GetTU(cData[BUFFLEN],...);
省略部分看过都是正确的,但是发现cData中的内容始终传的不对。网上的不少例子都不是数组变量,请问各位该如何解决这个问题?
------解决方案--------------------
用静态方式调用:extern "C" __declspec(dllimport) __stdcall int GetTU(unsigned char,...);
第一个参数这么变成unsigned char了,应该是unsigned char buffer[BUFFLEN],....);
另外 ,调用时
i=GetTU(cData,....);[BUFFLEN]就不能有了
------解决方案--------------------
extern "C" __declspec(dllimport) __stdcall int GetTU(unsigned char,...);有误!
改为extern "C" __declspec(dllimport) __stdcall int GetTU(unsigned char[BUFFLEN],...);有误!
1.若是以为数组可以考虑采用指针来传递参数
2.若用二维数组的话可以采用形如:
问题如上,调试了半天发现引出函数中的数组传递不对。
定义:extern "C" __declspec(dllexport) __stdcall int GetTU( unsigned char buffer[BUFFLEN],....);
用静态方式调用:extern "C" __declspec(dllimport) __stdcall int GetTU(unsigned char,...);
i=GetTU(cData[BUFFLEN],...);
省略部分看过都是正确的,但是发现cData中的内容始终传的不对。网上的不少例子都不是数组变量,请问各位该如何解决这个问题?
------解决方案--------------------
用静态方式调用:extern "C" __declspec(dllimport) __stdcall int GetTU(unsigned char,...);
第一个参数这么变成unsigned char了,应该是unsigned char buffer[BUFFLEN],....);
另外 ,调用时
i=GetTU(cData,....);[BUFFLEN]就不能有了
------解决方案--------------------
extern "C" __declspec(dllimport) __stdcall int GetTU(unsigned char,...);有误!
改为extern "C" __declspec(dllimport) __stdcall int GetTU(unsigned char[BUFFLEN],...);有误!
1.若是以为数组可以考虑采用指针来传递参数
2.若用二维数组的话可以采用形如:
- C/C++ code
typedef char (*PCHAR_ARRAY)[128]; PCHAR_ARRAY buffer;