--.--.-- *--*
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

error LNK2019: 未解決の外部シンボルxxxxxが・・・・

2011.07.08 *Fri*
最近こんな検索ワードで飛んできている方がいるようです。
「error LNK2019: 未解決の外部シンボル xxxxx が関数 zzzzz で参照されました」
これは「実体の無い関数などが呼び出された」場合におきるエラーです。


このリンカエラーが出る場合は大抵、プロトタイプ宣言時のスペルミスや

・.h はインクルードしているが、.lib がない。
・.lib のパスが設定されていないか、間違っている。

・プロトタイプ宣言されているのに実体が定義されていない

・実体のあるソースのヘッダファイルがincludeされているが
 パブリックシンボルではない為に外部参照できない。

といった原因でおこります。

■再現例

test.c

#include <windows.h>
#include <stdio.h>

void func001(int value); //プロトタイプ宣言

void main() {
func001( 12345 ); // 実体が宣言される前に使用しているので、プロトタイプ宣言が必要。
return;
}

// これが関数の実体。コメントアウトすれば 「error LNK2019」が再現できる
void func001(int value) {
printf("0x%4x", value);
return;
}


別モジュールの関数を使う場合
test.c

#include <windows.h>

//ヘッダーをincludeする
#include "aaaa.h"

void main()
{
func001( 12345 );
return;
}

aaaa.h

void func001(int value); //ヘッダファイルにプロトタイプ宣言

aaaa.c
このファイルがコンパイル対象になっていないと aaaa.obj
がリンクされないので「error LNK2019」となる

#include <windows.h>
#include <stdio.h>

//実体定義。コメントアウトしても「error LNK2019」が再現できる
void func001(int value) {
printf("0x%4x", value);
return;
}
関連記事
| 未分類 |

COMMENT

Comment Form


秘密にする
 


TRACKBACK

TrackBack List



プロフィール

Author:みのり

すごく面倒臭がりで大雑把です。
なので、すぐ楽をしようとして
ツールを作り始めます。
ツールを作る時間と手作業で費やす時間
はたしてどちらが短いのか……


-構築環境-

Auriga0945 MySQL 5.5
with 2011-12-20bRagexeRE

3CeAM rev525
with 2010-07-30aRagexeRE



カテゴリ

未分類 (9)
RagexeRE (9)
eAthena (1)
Auriga (5)
ツール:eAthena用 (4)
ツール:Auriga用 (6)
ツール:その他 (14)
はじめてのAurigaスクリプト (8)
はじめてのAurigaスクリプト基本編 (21)
はじめてのAurigaスクリプト応用編 (7)
Aurigaスクリプト (3)
本鯖 (7)
Aurigaスクリプト:冒険者アカデミー (6)
ドラクエ10 (2)
新生FF14 (3)
EVE Online (2)



最新記事



最新コメント



月別アーカイブ



検索フォーム



リンク

このブログをリンクに追加する



ブロとも申請フォーム

この人とブロともになる



QRコード

QR



12
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Copyright © Rocco di Forte All Rights Reserved.
テンプレート配布者: サリイ  ・・・  素材: HELIUM  ・・・ 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。