У меня есть заголовочный файл с именем NetworkInterfaceInfoProvider.h. в этом файле заголовка я объявить класс следующим образом:неразрешенный внешний символ при использовании библиотеки
#ifndef INETWORK_INTERFACE_INFO_PROVIDER_H
#define INETWORK_INTERFACE_INFO_PROVIDER_H
#pragma once
/*#include "stdafx.h"*/
#include "IConfig.h"
#include "NetworkAddapterAddresses.h"
#include "InstaledAddapters.h"
namespace IRNetwork
{
class CLASS_DECLSPEC INet;
struct CLASS_DECLSPEC GenericIPAddress;
/*
* provide information about all network interface related adapters such as installed interfaces , addresses , best routes and ...
* TO DO: implement Other OS's
*/
class CLASS_DECLSPEC INetworkInterfaceInfoProvider
{
public:
INetworkInterfaceInfoProvider(void);
~INetworkInterfaceInfoProvider(void);
int32_t GetBestRouteTo(char* destIp,uint16_t port,ip_t *ip);
int32_t GetBestRouteTo(GenericIPAddress* ip);
private:
INet* snet;
};
}
#endif
, когда я хочу использовать его в моем консольном приложении я получил следующее сообщение об ошибке компоновщика
* примечание: библиотека выше кода была связана к моему консольному приложению. CLASS_DECLSPEC является определение длл импорт/экспорт *
ошибка LNK2019: неразрешенный внешний символ «__declspec (DllImport) общественности: INT __thiscall IRNetwork :: INetworkInterfaceInfoProvider :: GetBestRouteTo (символ , неподписанные короткий, символ () [65])»(_ имп? GetBestRouteTo @ INetworkInterfaceInfoProvider @ IRNetwork @@ QAEHPADGPAY0EB @ D @ Z) ссылки в функции "недействительным __cdecl test_adapters (пустоты)" (? test_adapters @@ YAXXZ) testDhcpv4.obj testDhcpv4
Что здесь не так?
это то, что файл дампа говорит 197 C4 0000B120 GetBestRouteTo @ INetworkInterfaceInfoProvider @ IRNetwork @@ QAEHPADGW4SocketTypeEnum @ 2 @ PAY0EB @ D @ Z = GetBestRouteTo @ INetworkInterfaceInfoProvider @ IRNetwork @@ QAEHPADGW4SocketTypeEnum @ 2 @ PAY0EB @ D @ Z (публичный?: int __thiscall IRNetwork :: INetworkInterfaceInfoProvider :: GetBestRouteTo (char *, unsigned short, enum IRNetwork :: SocketTypeEnum, char (*) [65])) его истинная база в моем синтаксисе для объявления функции –
как я могу проверить, чтобы увидеть ее правильно или нет? Я добавляю библиотеку моей библиотеки DLL для ввода библиотеки приложений. это достаточно? –
после изменения типа конфигурации в динамической библиотеке ссылок (DLL), все правильно работает –