首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

BCB调用labview写的DLL出错。解决方法

2012-03-02 
BCB调用labview写的DLL出错。。。 - C++ Builder / Windows SDK/API我现在需要通过一个DLL(该DLL里面有访问or

BCB调用labview写的DLL出错。。。 - C++ Builder / Windows SDK/API
我现在需要通过一个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);

大侠们看看问题处在哪了。。

[解决办法]
你这样试试:

C/C++ code
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);} 

热点排行