• 7049阅读
  • 1回复

如何在cpp使用头文件中的定义的函数。 [复制链接]

上一主题 下一主题
离线zhangyujin78
 
只看楼主 倒序阅读 楼主  发表于: 2009-07-29
以下是cpp中的代码:
#include "hk.h"
#include "ui_hk.h"
#include <QtGui/QWidget>
#include "QtGui"
#include "hcnetsdk.h"
#include <qstring.h>
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "stdint.h"
#include "unistd.h"
#include "time.h"
typedef unsigned int  BOOL;
typedef unsigned char BYTE;
typedef unsigned short WORD;
typedef unsigned int DWORD;
#define USER_NAME  "admin"
#define PASSWD  "12345"
#define PORT  8000
int glUserID = -1;
#define LOCAL_IP "192.0.2.2"
#define LOCAL_PORT 7200
hk::hk(QWidget *parent)
    : QWidget(parent)
{
 ui.setupUi(this);
}
hk::~hk()
{
 
}
void hk::on_Button_close_clicked()
{
 this->close();
 }
int hk::on_Button_connect_clicked()
        {  
         NET_DVR_DEVICEINFO devInfo;
         // IP地址
         char localip[16];
         char serverip[16];
         strcpy(ui.lineEdit_iplocal->text().toUtf8().data(),localip);
         strcpy(ui.lineEdit_ipserver->text().toUtf8().data(),serverip);
         //initialization
         if(!NET_DVR_Init())
          {
           ui.lineEdit->setText(tr("HC Clientdemo Init failed"));
           return -1;
          }
         else
         {
          ui.lineEdit->setText(tr("HC Clientdemo Init success!"));
         }
         //超时设置
         if (!NET_DVR_SetConnectTime(5000, 3))
          {
           ui.lineEdit->setText(tr("connect out time! try again"));
           return -1;
          }
          //set callback
         // NET_DVR_SetDVRMessageCallBack(gfMessCallBack, (void*)1);
              //监听
         if(!NET_DVR_StartListen(localip, LOCAL_PORT))
          {
          ui.lineEdit->setText(tr("StartListen failed ... LastError[%d]"));
           //   printf("StartListen failed ... LastError[%d]\n", NET_DVR_GetLastError());
            NET_DVR_Cleanup();
             return -1;
          }
         //UserID 获取
         glUserID =NET_DVR_Login(serverip, PORT, USER_NAME, PASSWD, &devInfo);
         if(glUserID < 0)
         {
          ui.lineEdit->setText(tr("Login DVR failed ... LastError[%d]"));
          //printf( "Login DVR failed ... LastError[%d]\n", NET_DVR_GetLastError() ); 
          NET_DVR_StopListen();
          NET_DVR_Cleanup();
          return -1;
         }
        }
#include "hcnetsdk.h"我所需要调用的函数都在这个头文件里面了。
调用的函数有:
NET_DVR_Init()
NET_DVR_SetConnectTime(5000, 3)
NET_DVR_StartListen(localip, LOCAL_PORT)
NET_DVR_Login(serverip, PORT, USER_NAME, PASSWD, &devInfo);
NET_DVR_StopListen();
NET_DVR_Cleanup();
编译的时候就报错,说以上几个函数就是没有定义undefined reference to上面几个函数,本人初学C++和QT
查看了下hcnetsdk.h,该头文件是BOSS给我的一个SDK那里复制过来的。头文件里面有关的信息如下:
NET_DVR_API BOOL   NET_DVR_Init();
NET_DVR_API BOOL   NET_DVR_Cleanup();
NET_DVR_API BOOL   NET_DVR_SetDVRMessCallBack(BOOL (  *fMessCallBack)(int lCommand,char *sDVRIP,char *pBuf,DWORD dwBufLen));
NET_DVR_API BOOL   NET_DVR_SetConnectTime(DWORD dwWaitTime,DWORD dwTryTimes);
NET_DVR_API BOOL   NET_DVR_StartListen(char *sLocalIP,WORD wLocalPort);
NET_DVR_API BOOL   NET_DVR_StopListen();
NET_DVR_API int   NET_DVR_Login(char *sDVRIP,WORD wDVRPort,char *sUserName,char *sPassword,LPNET_DVR_DEVICEINFO lpDeviceInfo);

有高手帮我看看是哪里错了么。。。或者说,怎么正确将头文件中的函数调用到实现文件cpp中?
离线allblue

只看该作者 1楼 发表于: 2009-07-29
只有.h文件还不行吧,还要有源码或者是编译好的库,不同的结构还要有对应不同结构的。
黑暗魔法
快速回复
限100 字节
 
上一个 下一个