【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】

長いタイトルになってしまいすみません。

私は、Visual C++.NETを使用して、C言語プログラミングをしています。あるサンプルプログラムを参考にしながら改良を図っているのですが、以下に示すプログラムを追加したところ、タイトルに示しましたエラーが表示されて困っています。


//長くなり見づらいため、問題の箇所のみ記します。
void main(int argc, char** argv){

}

void *sender(void* context){

for(i=0;i<10;i++){
print_identity()
print_identity()
}

}

for文の中に、print_identity関数を追加したところ、
エラーが発生しました。

[エラー内容]
1. sample error LNK2019: 未解決の外部シンボル _print_identity が関数 _senderで参照されました。

2. sample fatal error LNK1120: 外部参照 1 が未解決です。

関数の定義がしていないと言うことでしょうか?実際に、定義してみたりしました(定義する場所が違うのかもしれません)が、解決できませんでした。

よろしくお願いします。

A 回答 (4件)

>print_identity関数は、自作関数です。


であれば、
void print_identity(void){;}

void print_identity(unsigned char *clue){
/* この関数での処理 */
}
に置き換えて下さい。
    • good
    • 0
この回答へのお礼

解決しました。
ありがとうございました。

お礼日時:2005/10/27 15:41

>どういう意味なんでしょうか?


関数の定義そのものなので、
;
の部分には、その関数で行う実際の処理を書き連ねていかないといけません。
void print_identity(void);
の場合は、プロトタイプ宣言で、どこかに実際に処理をともなう関数の定義がなければいけません。
もし、その関数が外部のライブラリに含まれていて、
中身を定義する必要が無くて本来プロトタイプ宣言だけでいいということなら、
#include指定やlibの指定あるいはリンクに含めるファイルのリストを見直しましょう。

ところで
>print_identity関数を追加したところ、
print_identity関数ってなんなんですか?
自作関数ではないのですか?

この回答への補足

print_identity関数は、自作関数です。

以下のfor文の中に、print_identity関数を記述するつもりです。print_identity関数は、引数にunsigned char型の配列を持ちます。

for(i=0;i<10;i++){
  print_identity(6バイトのunsigned charの配列)
  print_identity(6バイトのunsigned charの配列)
}

補足日時:2005/10/25 01:38
    • good
    • 0

(コンパイルではなく)リンクで落ちていますから、print_identity() を含むファイルを一緒に処理するのを忘れている(プロジェクトに該当ファイルが追加されていない)というのが、ありそうだなという気がします。



もちろん、print_identy() の実体がないという可能性もあります。
    • good
    • 0

参照する前に定義がされていないということだと思います。


void print_identity(void){;}
のように定義されているでしょうか
多分、voidが省略されて書かれているのではないですか

この回答への補足

こんばんは。
void print_identity(void){;}を以下のところに追加の様に追加したところコンパイル可能となりました。しかし、実際のところ、定義が出来ただけできちんと動作しているのかわかりませんが・・・


void *send_packet(void* context);
void print_identity(byte* clue){;}

void main(int argc, char** argv){

}

void *sender(void* context){

 for(i=0;i<10;i++){
  print_identity(6バイトのunsigned charの配列)
  print_identity(6バイトのunsigned charの配列)
 }

}

ところで、このvoid print_identity(void){;}の{;}は、どういう意味なんでしょうか?中括弧をはずしてセミコロンだけでコンパイルするとエラーが表示されますが、{;}とするとコンパイル成功します。

補足日時:2005/10/24 20:26
    • good
    • 0

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


おすすめ情報