BCB调用labview写的DLL出错。。。

ozil1236 2011-10-10 04:49:02
我现在需要通过一个DLL(该DLL里面有访问oracle数据库的函数)来获取oracle里的数据。结果什么数据也没得到。。
该DLL是用labview写的,不知道用BCB调用有什么注意的地方。。

函数原型: int16_t GetQbidDataFromOracle(char config_file[], char serial_number[],uint8_t qbid_data[]);

第一个参数是配置文件路径,里面是访问oracle用户名和密码之类的信息,第二个是产品的序列号,前2个参数是输入参数,第三个参数是将查询的数据存入该数组里。

我写的代码如下:请各位高手看看哪里有问题,为啥qbid_data数组是空的。

int16_t (*GetQbid)(char config_file[], char serial_number[],uint8_t qbid_data[]); //申明函数指针

char config_file[]="C:\\Mfg_test\\AXS2200\\conora.cfg"; //配置文件路径
char serial_number[]="K11FX11061010040" ; //产品序列号
uint8_t qbid_data[1024];
HINSTANCE hInst;
FARPROC lpFarProc;

memset(qbid_data,0,1024);

hInst =LoadLibrary("C:\\Mfg_test\\DLLs and Libs\\OracleAPI.dll"); //该DLL的路径
if(hInst==NULL)
{
ShowMessage("load dll error ");
return;
}


lpFarProc = GetProcAddress(hInst,"GetQbidDataFromOracle");
if(lpFarProc==NULL)
{
ShowMessage("error locate function");
return;
}

GetQbid= (int16_t (*)(char config_file[], char serial_number[],uint8_t qbid_data[]))lpFarProc; //强制类型转化

GetQbid(config_file,serial_number,qbid_data);

char *p=(char*)qbid_data;
String str=p;
ShowMessage(str); //show出来是空的,神马数据都没有!!
FreeLibrary(hInst);

大侠们看看问题处在哪了。。
...全文
160 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ozil1236 2011-10-28
  • 打赏
  • 举报
回复
被那个数组给忽悠了,其实数组里是有数据的,只是数据不是顺序排列的,到第31位开始才出现一部分数据,每隔31位又出现一批数据,其余都是'\0'填充的,所以ShowMessage秀不出来。。
ccrun.com 2011-10-10
  • 打赏
  • 举报
回复
你这样试试:
typedef int16_t (*GETQBIDDATAFROMORACLE)(char config_file[], char serial_number[], uint8_t qbid_data[]);

HINSTANCE hDll = LoadLibrary("C:\\Mfg_test\\DLLs and Libs\\OracleAPI.dll");
if (hDll)
{
char config_file[] = "C:\\Mfg_test\\AXS2200\\conora.cfg"; //配置文件路径
char serial_number[] = "K11FX11061010040" ; //产品序列号
uint8_t qbid_data[1024];

GETQBIDDATAFROMORACLE GetQbidDataFromOracle = (GETQBIDDATAFROMORACLE)
GetProcAddress(hDll, "GetQbidDataFromOracle");

if (GetQbidDataFromOracle)
{
GetQbidDataFromOracle(config_file, serial_number, qbid_data);

ShowMessage(String((char *)qbid_data));
}

FreeLibrary(hDll);
}


如果没有反应,就单步执行,看能否单步到 GetQbidDataFromOracle 这一步。
ozil1236 2011-10-10
  • 打赏
  • 举报
回复
求高手回复。。

1,221

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧