15

誰かが私に、このような代わりに関数を使用するように言いましstrlcpystrcpy

#include <stdio.h>
#include <string.h>

void main()
{
   char var1[6] = "stuff";
   char var2[7] = "world!";
   strlcpy(var1, var2, sizeof(var2));
   printf("hello %s", var1);

} 

ファイルをコンパイルすると、次のエラーが表示されます。

C:\Users\PC-1\AppData\Local\Temp\ccafgEAb.o:c.c:(.text+0x45): undefined referenc
e to `strlcpy'
collect2.exe: error: ld returned 1 exit status

注意: MinGW (Minimalist GNU for Windows) をインストール しました。gccのバージョンは4.7.2です。

何が問題ですか?

4

4 に答える 4

7

「strlcpy」への未定義の参照

これは、リンカー ( collect2gcc を使用している場合) が問題の関数の定義 (宣言またはプロトタイプではなく関数のコードが定義されている定義)を見つけられない場合に発生します。

あなたの場合、strlcpyリンクするコードを持つ共有オブジェクトまたはライブラリがないために発生する可能性があります。コードを含むライブラリが確実にあり、それに対してリンクしたい場合は-L<path_to_library>、コンパイラに渡されるパラメータでライブラリへのパスを指定することを検討してください。

于 2013-08-31T10:53:26.430 に答える
4

strlcpy()標準の C 関数ではありません。

strncpy()代わりにorを使用することもできmemcpy()ます。

于 2013-08-31T10:46:09.087 に答える