采用源码引入的方式报错: 无法解析的外部符号
hhbusui opened this issue · comments
不随 commented
问题
采用源码引入的方式,加载hpsocket,目录结构如下
只要我引入CUdpCastPtr 就报错。
LNK2019 无法解析的外部符号 __imp__HP_Create_UdpCast,该符号在函数 "public: static class IUdpCast * __cdecl UdpCast_Creator::Create(class IUdpCastListener *)" (?Create@UdpCast_Creator@@SAPAVIUdpCast@@PAVIUdpCastListener@@@z) 中被引用
LNK2019 无法解析的外部符号 __imp__HP_Destroy_UdpCast,该符号在函数 "public: static void __cdecl UdpCast_Creator::Destroy(class IUdpCast *)" (?Destroy@UdpCast_Creator@@SAXPAVIUdpCast@@@z) 中被引用
环境
部分代码
#include "UdpSocket.h"
#include <thread>
#include <iostream>
using namespace std;
//#include "HPSocket/Include/HPSocket/HPSocket.h"
UdpSocket* UdpSocket::m_pUdpSocket = nullptr;
UdpSocket * UdpSocket::getInstance()
{
if (m_pUdpSocket == nullptr)
{
m_pUdpSocket = new UdpSocket;
}
return m_pUdpSocket;
}
void UdpSocket::destory()
{
//if(m_pUdpCastPtr)
if (m_pUdpSocket == nullptr)
{
delete m_pUdpSocket;
m_pUdpSocket = nullptr;
}
}
void UdpSocket::start(char* addr, short port)
{
//LPCTSTR addrStr = rep addr;
// options
m_pUdpCastPtr->SetCastMode(CM_MULTICAST);
m_pUdpCastPtr->SetMultiCastLoop(TRUE);
m_pUdpCastPtr->SetReuseAddressPolicy(RAP_ADDR_AND_PORT);
m_pUdpCastPtr->SetMultiCastTtl(1);
// start
BOOL startRet = m_pUdpCastPtr->Start(addr, port);
if (!startRet)
{
cout << "start error! " << endl;
return;
}
cout << "start ok! " << endl;
// 阻塞线程不退出
while (true)
{
}
}
void UdpSocket::stop()
{
}
UdpSocket::UdpSocket()
: m_pUdpSocketImpl(new UdpSocketImpl)
, m_pUdpCastPtr(m_pUdpSocketImpl)
{
}
#include "UdpSocketImpl.h"
#include <iostream>
#include "./WpnpExternalLogic.h"
using namespace std;
EnHandleResult UdpSocketImpl::OnPrepareConnect(IUdpCast * pSender, CONNID dwConnID, SOCKET socket)
{
return HR_OK;
}
EnHandleResult UdpSocketImpl::OnSend(IUdpCast * pSender, CONNID dwConnID, const BYTE * pData, int iLength)
{
return HR_OK;
}
EnHandleResult UdpSocketImpl::OnReceive(IUdpCast * pSender, CONNID dwConnID, const BYTE * pData, int iLength)
{
return HR_OK;
}
EnHandleResult UdpSocketImpl::OnClose(IUdpCast * pSender, CONNID dwConnID, EnSocketOperation enOperation, int iErrorCode)
{
return HR_OK;
}
EnHandleResult UdpSocketImpl::OnConnect(IUdpCast * pSender, CONNID dwConnID)
{
cout << "OnConnect: " << endl;
return HR_OK;
}
oskey commented
依赖没写啊发自我的iPhone------------------ 原始邮件 ------------------发件人: gak ***@***.***>发送时间: 2023年1月12日 10:36收件人: ldcsaa/HP-Socket ***@***.***>抄送: Subscribed ***@***.***>主题: Re: [ldcsaa/HP-Socket] 采用源码引入的方式报错: 无法解析的外部符号 (Issue #244)
问题
采用源码引入的方式,加载hpsocket,目录结构如下
只要我引入CUdpCastPtr 就报错。
LNK2019 无法解析的外部符号 __imp__HP_Create_UdpCast,该符号在函数 "public: static class IUdpCast * __cdecl UdpCast_Creator::Create(class IUdpCastListener *)" ***@***.***_Creator@@SAPAVIUdpCast@@PAVIUdpCastListener@@@z) 中被引用
LNK2019 无法解析的外部符号 __imp__HP_Destroy_UdpCast,该符号在函数 "public: static void __cdecl UdpCast_Creator::Destroy(class IUdpCast *)" ***@***.***_Creator@@SAXPAVIUdpCast@@@z) 中被引用
环境
vs2015 + win10 项目属性中配置如下
部分代码
#include "UdpSocket.h"
#include <thread>
#include <iostream>
using namespace std;
//#include "HPSocket/Include/HPSocket/HPSocket.h"
UdpSocket* UdpSocket::m_pUdpSocket = nullptr;
UdpSocket * UdpSocket::getInstance()
{
if (m_pUdpSocket == nullptr)
{
m_pUdpSocket = new UdpSocket;
}
return m_pUdpSocket;
}
void UdpSocket::destory()
{
//if(m_pUdpCastPtr)
if (m_pUdpSocket == nullptr)
{
delete m_pUdpSocket;
m_pUdpSocket = nullptr;
}
}
void UdpSocket::start(char* addr, short port)
{
//LPCTSTR addrStr = rep addr;
// options
m_pUdpCastPtr->SetCastMode(CM_MULTICAST);
m_pUdpCastPtr->SetMultiCastLoop(TRUE);
m_pUdpCastPtr->SetReuseAddressPolicy(RAP_ADDR_AND_PORT);
m_pUdpCastPtr->SetMultiCastTtl(1);
// start
BOOL startRet = m_pUdpCastPtr->Start(addr, port);
if (!startRet)
{
cout << "start error! " << endl;
return;
}
cout << "start ok! " << endl;
// 阻塞线程不退出
while (true)
{
}
}
void UdpSocket::stop()
{
}
UdpSocket::UdpSocket()
: m_pUdpSocketImpl(new UdpSocketImpl)
, m_pUdpCastPtr(m_pUdpSocketImpl)
{
}
#include "UdpSocketImpl.h"
#include <iostream>
#include "./WpnpExternalLogic.h"
using namespace std;
EnHandleResult UdpSocketImpl::OnPrepareConnect(IUdpCast * pSender, CONNID dwConnID, SOCKET socket)
{
return HR_OK;
}
EnHandleResult UdpSocketImpl::OnSend(IUdpCast * pSender, CONNID dwConnID, const BYTE * pData, int iLength)
{
return HR_OK;
}
EnHandleResult UdpSocketImpl::OnReceive(IUdpCast * pSender, CONNID dwConnID, const BYTE * pData, int iLength)
{
return HR_OK;
}
EnHandleResult UdpSocketImpl::OnClose(IUdpCast * pSender, CONNID dwConnID, EnSocketOperation enOperation, int iErrorCode)
{
return HR_OK;
}
EnHandleResult UdpSocketImpl::OnConnect(IUdpCast * pSender, CONNID dwConnID)
{
cout << "OnConnect: " << endl;
return HR_OK;
}
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you are subscribed to this thread.Message ID: ***@***.***>
[
{
***@***.***": "http://schema.org",
***@***.***": "EmailMessage",
"potentialAction": {
***@***.***": "ViewAction",
"target": "#244",
"url": "#244",
"name": "View Issue"
},
"description": "View this Issue on GitHub",
"publisher": {
***@***.***": "Organization",
"name": "GitHub",
"url": "https://github.com"
}
}
]
Endt4sk commented
Project->Properties->C/C++->Preprocessor->Preprocessor Definitions
添加 HPSOCKET_STATIC_LIB