システムメンテナンスのお知らせ

プログラミング初心者です。
Visal Studio 2010を使用してC++の勉強をしています。

http://www.geekpage.jp/programming/iphlpapi/inte …
上の記事を参考にIP Helper APIのプログラミングを試してみたのですが、エラーが出てしまいコンパイルできません。
「Windows.hをインクルードすると良い」という記事を見つけて試しましたが、同様のエラーが出るだけでした。

//コード------------
#include "stdafx.h"
#include <WinSock2.h>
#include <IPHlpApi.h>
#include <Windows.h>

int _tmain(int argc, _TCHAR* argv[])
{
PIP_INTERFACE_INFO pInfo = NULL;
ULONG ulOutBufLen = 0;
DWORD dwRetVal = 0;
/* 変数ulOutBufLenに必要なサイズを取得 */
if( GetInterfaceInfo(NULL, &ulOutBufLen)==ERROR_INSUFFICIENT_BUFFER ){
pInfo = (IP_INTERFACE_INFO *)malloc(ulOutBufLen);
}
return 0;
}
//実行結果----------
error LNK1120: 外部参照 1 が未解決です。 R:\Programming\VisualStudio2010\Projects\IPHLPAPIの利用\Debug\IPHLPAPIの利用.exe IPHLPAPIの利用
error LNK2001: 外部シンボル "_GetInterfaceInfo@8" は未解決です。 R:\Programming\VisualStudio2010\Projects\IPHLPAPIの利用\IPHLPAPIの利用\IPHLPAPIの利用.obj IPHLPAPIの利用
//------------------

ちなみに、main内の5行目「GetInterfaceInfo」は「IPHlpApi.h」内にちゃんと存在しています。

以上になります。長文お読みいただきありがとうございました。
色々検索してみましたがお手上げ状態です・・・よろしくお願いいたします。

gooドクター

A 回答 (2件)

MSDNには,


> Requirements
> Library Iphlpapi.lib
とあるのですが,Iphlpapi.libをちゃんとリンクしていますか。

ref)
http://msdn.microsoft.com/en-us/library/windows/ …

この回答への補足

直接解決に繋がったこちらのご回答をBAとさせていただきます。お二方ともありがとうございました。

補足日時:2013/11/23 19:46
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。#includeの下に
「#pragma comment(lib,"iphlpapi.lib")」
の一行を追加したところ正常に動作しました!
リンクという機能があったのは初めて知りました。大変勉強になりよかったです。ありがとうございます。

お礼日時:2013/11/23 19:36

>ちなみに、main内の5行目「GetInterfaceInfo」は「IPHlpApi.h」内にちゃんと存在しています。



それはGetInterfaceInfoという関数があることが書かれているだけ、その実体は#1の書かれているライブラリにあります。
「プロトタイプ宣言」を調べてみてください。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
そう言われてみれば、確かにF12キーで参照できるのはヘッダの宣言ですね。プロトタイプ宣言については一応知っているつもりでしたが、多量の記述に圧倒されて本質を見抜けずにいました。でもご指摘いただけたおかげで、また一つ理解を進めることができよかったです。ありがとうございます。

お礼日時:2013/11/23 19:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

gooドクター

人気Q&Aランキング