• ベストアンサー

外部シンボルについて

リンク中... session.obj : error LNK2001: 外部シンボル "_bcopy" は未解決です session.obj : error LNK2001: 外部シンボル "_bzero" は未解決です Debug/session.exe : fatal error LNK1120: 外部参照 2 が未解決です。 link.exe の実行エラー VC++を使用しましてビルドとコンパイルをしますと上記のようなエラーがでます。ライブラリのリンク不足なのでしょうか?どのファイルを使用すればいいかわかりません。宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#25358
noname#25358
回答No.3

 補足文に記載されている close に関して。  それは close 関数ということでしょうか?  であれば、通常は _close になるはずです。(特に気にしなければアンダーバーを付加した形になります)  ただ、外部シンボルはリンカー・プログラムが内部的に使用する名前です。  DLLとかを作る場合は気にしなきゃいけないときもありますが( _close@56 とかそういう名前になったりするので)、基礎的なプログラムを作っている時点では気にする必要はないはずです。  ちなみに#2の方の方法のが手間がなくてよかったですね(^_^; まあ、結果は一緒ですが。(俺の考えが足りなかったようです。申し訳ない)

その他の回答 (2)

  • yatokesa
  • ベストアンサー率40% (201/496)
回答No.2

VC や ANSI ではないようです。 #defnie bzero(base, n )  memset((base), 0, (n)) #defnie bcopy(from, to, n) memcpy((to), (from), (n)) で置き換えられるようです。

noname#25358
noname#25358
回答No.1

 bcopy と bzero はどっちもC++のライブラリ関数じゃないですよね(UNIX系のC言語の関数です)。  なので、そもそもこれらの関数がないよ、と言っているのです。  ソース中の bcopy 関数と bzero 関数を別の関数で代用する必要があります。(アンダーバーはコンパイラが自動付加したものなので、_bcopy 関数ではありません)  bcopy は、memcpy にまんま置き換えて使えます。CTRL+H で置き換えてください。  bzero は、memset で代用できます。  現在、「bzero( www, 100 );」 とか、こういう形になっていると思います。これを、「memset( www, 0, 100 );」に置き換えてください。第2引数は0で固定でいいです。  ソース中の関数は全てです。  おそらくはこれでいけるはずです。

fm0606
質問者

補足

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

関連するQ&A

専門家に質問してみよう