我有一個名爲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是DLL導入/導出定義*
錯誤LNK2019:無法解析的外部符號「__declspec(dllimport的) 市民:INT __thiscall IRNetwork :: INetworkInterfaceInfoProvider :: GetBestRouteTo(焦 ,無符號短,CHAR()[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,枚舉IRNetwork :: SocketTypeEnum,char(*)[65])) 它的真正基礎在於我的語法函數聲明 – 2012-07-29 14:34:06
我怎麼能檢查看到它鏈接是否正確? 我添加我的dll庫到控制檯應用程序庫輸入。 這夠了嗎? – 2012-07-29 14:37:50
將配置類型更改爲動態鏈接庫(DLL)後,每件事情都可以正常工作 – 2012-07-29 14:50:42