プロが教えるわが家の防犯対策術!

リンク中...
session.obj : error LNK2001: 外部シンボル "_bcopy" は未解決です
session.obj : error LNK2001: 外部シンボル "_bzero" は未解決です
Debug/session.exe : fatal error LNK1120: 外部参照 2 が未解決です。
link.exe の実行エラー

VC++を使用しましてビルドとコンパイルをしますと上記のようなエラーがでます。ライブラリのリンク不足なのでしょうか?どのファイルを使用すればいいかわかりません。宜しくお願いします。

A 回答 (3件)

 補足文に記載されている close に関して。



 それは close 関数ということでしょうか?
 であれば、通常は _close になるはずです。(特に気にしなければアンダーバーを付加した形になります)

 ただ、外部シンボルはリンカー・プログラムが内部的に使用する名前です。
 DLLとかを作る場合は気にしなきゃいけないときもありますが( _close@56 とかそういう名前になったりするので)、基礎的なプログラムを作っている時点では気にする必要はないはずです。

 ちなみに#2の方の方法のが手間がなくてよかったですね(^_^; まあ、結果は一緒ですが。(俺の考えが足りなかったようです。申し訳ない)
    • good
    • 0

VC や ANSI ではないようです。


#defnie bzero(base, n )  memset((base), 0, (n))
#defnie bcopy(from, to, n) memcpy((to), (from), (n))
で置き換えられるようです。
    • good
    • 0

 bcopy と bzero はどっちもC++のライブラリ関数じゃないですよね(UNIX系のC言語の関数です)。


 なので、そもそもこれらの関数がないよ、と言っているのです。

 ソース中の bcopy 関数と bzero 関数を別の関数で代用する必要があります。(アンダーバーはコンパイラが自動付加したものなので、_bcopy 関数ではありません)

 bcopy は、memcpy にまんま置き換えて使えます。CTRL+H で置き換えてください。
 bzero は、memset で代用できます。
 現在、「bzero( www, 100 );」 とか、こういう形になっていると思います。これを、「memset( www, 0, 100 );」に置き換えてください。第2引数は0で固定でいいです。

 ソース中の関数は全てです。
 おそらくはこれでいけるはずです。

この回答への補足

すみませんがcloseの外部シンボルはなんでしょうか?
上の2つは解決できました。
ありがとうございます。

補足日時:2002/07/17 16:34
    • good
    • 0

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