Oktavia_Su 2017-11-08 10:41 采纳率: 0%
浏览 2483
已结题

vs2013的win32控制台程序+海康威视sdk,一直出现error LNK2019的问题

 #include <stdio.h> 
#include <iostream> 
#include "Windows.h" 
#include "HCNetSDK.h" 
#include "plaympeg4.h" 
#include <time.h> 
using namespace std;


typedef HWND(WINAPI *PROCGETCONSOLEWINDOW)();
PROCGETCONSOLEWINDOW ConsoleWindow;

LONG lPort; //全局的播放库 port 号 

void CALLBACK g_RealDataCallBack_V30(LONG lRealHandle, DWORD dwDataType, BYTE *pBuffer, DWORD dwBufSize, void* dwUser)
{
    HWND hWnd = ConsoleWindow();

    switch (dwDataType)
    {
    case NET_DVR_SYSHEAD: //系统头 

        if (!PlayM4_GetPort(&lPort))  //获取播放库未使用的通道号 
        {
            break;
        }
        //m_iPort = lPort;  //第一次回调的是系统头,将获取的播放库 port 号赋值给全局 port,下次回调数据时即使用此 port 号播放 
        if (dwBufSize > 0)
        {
            if (!PlayM4_SetStreamOpenMode(lPort, STREAME_REALTIME))  //设置实时流播放模式 
            {
                break;
            }

            if (!PlayM4_OpenStream(lPort, pBuffer, dwBufSize, 1024 * 1024)) //打开流接口 
            {
                break;
            }

            if (!PlayM4_Play(lPort, hWnd)) //播放开始 
            {
                break;
            }
        }
        break;  
    case NET_DVR_STREAMDATA:   //码流数据 
            if (dwBufSize > 0 && lPort != -1)
            {
                if (!PlayM4_InputData(lPort, pBuffer, dwBufSize))
                {
                    break;
                }
            }
            break;  default:  //其他数据 
                if (dwBufSize > 0 && lPort != -1)
                {
                    if (!PlayM4_InputData(lPort, pBuffer, dwBufSize))
                    {
                        break;
                    }
                }
                break;
    }
}

void CALLBACK g_ExceptionCallBack(DWORD dwType, LONG lUserID, LONG lHandle, void *pUser)
{
    char tempbuf[256] = { 0 };
    switch (dwType)
    {
    case EXCEPTION_RECONNECT:    //预览时重连 
        printf("----------reconnect--------%d\n", time(NULL));
        break;
    default:
        break;
    }
}

void main() {

    //---------------------------------------   // 初始化 
    NET_DVR_Init();   //设置连接时间与重连时间 
    NET_DVR_SetConnectTime(2000, 1);
    NET_DVR_SetReconnect(10000, true);

    //---------------------------------------   // 获取控制台窗口句柄 
    HWND   hWnd   =   ::FindWindow("ConsoleWindowClass",NULL);

    //---------------------------------------   // 注册设备 
    LONG lUserID;
    NET_DVR_DEVICEINFO_V30 struDeviceInfo;
    lUserID = NET_DVR_Login_V30("172.0.0.100", 8000, "admin", "12345", &struDeviceInfo);
    if (lUserID < 0)
    {
        printf("Login error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    //---------------------------------------   //设置异常消息回调函数 
    NET_DVR_SetExceptionCallBack_V30(0, NULL, g_ExceptionCallBack, NULL);

    //---------------------------------------   //启动预览并设置回调数据流 
    LONG lRealPlayHandle;
    NET_DVR_PREVIEWINFO struPlayInfo = { 0 };   
    struPlayInfo.hPlayWnd = hWnd;       //需要 SDK 解码时句柄设为有效值,仅取流不解码时可设为空   
    struPlayInfo.lChannel     = 1;       //预览通道号   
    struPlayInfo.dwStreamType = 0;       //0-主码流,1-子码流,2-码流 3,3-码流 4,以此类推   
    struPlayInfo.dwLinkMode   = 0;      //0- TCP 方式,1- UDP 方式,2- 多播方式,3- RTP 方式,4-RTP/RTSP,5-RSTP/HTTP 
    struPlayInfo.bBlocked     = 1;      //0- 非阻塞取流,1- 阻塞取流 

    lRealPlayHandle = NET_DVR_RealPlay_V40(lUserID, &struPlayInfo, g_RealDataCallBack_V30, NULL);
    if (lRealPlayHandle < 0)
    {
        printf("NET_DVR_RealPlay_V40 error\n");
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    Sleep(10000);
    //---------------------------------------   //关闭预览 
    NET_DVR_StopRealPlay(lRealPlayHandle);   //注销用户 
    NET_DVR_Logout(lUserID);
    NET_DVR_Cleanup();

    return;
}

错误列表为:
错误 14 error LNK2019: 无法解析的外部符号 impPlayM4_SetStreamOpenMode@8,该符号在函数 "void stdcall g_RealDataCallBack_V30(long,unsigned long,unsigned char *,unsigned long,void *)" (?g_RealDataCallBack_V30@@YGXJKPAEKPAX@Z) 中被引用 C:\Users\Lenovo\documents\visual studio 2013\Projects\catch_video9\catch_video9\源.obj catch_video9
错误 11 error LNK2019: 无法解析的外部符号 __imp
PlayM4_Play@8,该符号在函数 "void stdcall g_RealDataCallBack_V30(long,unsigned long,unsigned char *,unsigned long,void *)" (?g_RealDataCallBack_V30@@YGXJKPAEKPAX@Z) 中被引用 C:\Users\Lenovo\documents\visual studio 2013\Projects\catch_video9\catch_video9\源.obj catch_video9
错误 12 error LNK2019: 无法解析的外部符号 __imp
PlayM4_OpenStream@16,该符号在函数 "void stdcall g_RealDataCallBack_V30(long,unsigned long,unsigned char *,unsigned long,void *)" (?g_RealDataCallBack_V30@@YGXJKPAEKPAX@Z) 中被引用 C:\Users\Lenovo\documents\visual studio 2013\Projects\catch_video9\catch_video9\源.obj catch_video9
错误 13 error LNK2019: 无法解析的外部符号 __imp
PlayM4_InputData@12,该符号在函数 "void stdcall g_RealDataCallBack_V30(long,unsigned long,unsigned char *,unsigned long,void *)" (?g_RealDataCallBack_V30@@YGXJKPAEKPAX@Z) 中被引用 C:\Users\Lenovo\documents\visual studio 2013\Projects\catch_video9\catch_video9\源.obj catch_video9
错误 15 error LNK2019: 无法解析的外部符号 __imp
PlayM4_GetPort@4,该符号在函数 "void stdcall g_RealDataCallBack_V30(long,unsigned long,unsigned char *,unsigned long,void *)" (?g_RealDataCallBack_V30@@YGXJKPAEKPAX@Z) 中被引用 C:\Users\Lenovo\documents\visual studio 2013\Projects\catch_video9\catch_video9\源.obj catch_video9
错误 9 error LNK2019: 无法解析的外部符号 __imp
NET_DVR_StopRealPlay@4,该符号在函数 main 中被引用 C:\Users\Lenovo\documents\visual studio 2013\Projects\catch_video9\catch_video9\源.obj catch_video9
错误 5 error LNK2019: 无法解析的外部符号 __imp
_NET_DVR_SetReconnect@8,该符号在函数 main 中被引用 C:\Users\Lenovo\documents\visual studio 2013\Projects\catch_video9\catch_video9\源.obj catch_video9
错误 3 error LNK2019: 无法解析的外部符号 __imp
_NET_DVR_SetExceptionCallBack_V30@16,该符号在函数 main 中被引用 C:\Users\Lenovo\documents\visual studio 2013\Projects\catch_video9\catch_video9\源.obj catch_video9
错误 4 error LNK2019: 无法解析的外部符号 __imp
_NET_DVR_SetConnectTime@8,该符号在函数 main 中被引用 C:\Users\Lenovo\documents\visual studio 2013\Projects\catch_video9\catch_video9\源.obj catch_video9
错误 10 error LNK2019: 无法解析的外部符号 __imp
_NET_DVR_RealPlay_V40@16,该符号在函数 main 中被引用 C:\Users\Lenovo\documents\visual studio 2013\Projects\catch_video9\catch_video9\源.obj catch_video9
错误 7 error LNK2019: 无法解析的外部符号 __imp
_NET_DVR_Logout@4,该符号在函数 main 中被引用 C:\Users\Lenovo\documents\visual studio 2013\Projects\catch_video9\catch_video9\源.obj catch_video9
错误 6 error LNK2019: 无法解析的外部符号 __imp
_NET_DVR_Login_V30@20,该符号在函数 main 中被引用 C:\Users\Lenovo\documents\visual studio 2013\Projects\catch_video9\catch_video9\源.obj catch_video9
错误 1 error LNK2019: 无法解析的外部符号 __imp
_NET_DVR_Init@0,该符号在函数 main 中被引用 C:\Users\Lenovo\documents\visual studio 2013\Projects\catch_video9\catch_video9\源.obj catch_video9
错误 8 error LNK2019: 无法解析的外部符号 __imp
_NET_DVR_GetLastError@0,该符号在函数 main 中被引用 C:\Users\Lenovo\documents\visual studio 2013\Projects\catch_video9\catch_video9\源.obj catch_video9
错误 2 error LNK2019: 无法解析的外部符号 __imp
_NET_DVR_Cleanup@0,该符号在函数 _main 中被引用 C:\Users\Lenovo\documents\visual studio 2013\Projects\catch_video9\catch_video9\源.obj catch_video9
错误 16 error LNK1120: 15 个无法解析的外部命令 C:\Users\Lenovo\documents\visual studio 2013\Projects\catch_video9\Debug\catch_video9.exe catch_video9

其中catch_video9是程序名称……
求大神指点……在下萌新一枚,很多编程上的知识还有待提高,希望大家可以帮我指出我的错误……
在此谢谢大家!

  • 写回答

1条回答 默认 最新

  • oyljerry 2017-11-08 12:52
    关注

    工程中要配置海康威视SDK的lib库文件

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 7月21日

悬赏问题

  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办