私は共有ライブラリを動的にロードすることを含むCの練習をしています。dlsym - "関数への引数が多すぎます"エラー
void (*test)(void);
test = dlsym(handle, "lib_fill_random");
(*test)(array, size);
lib_fill_random
が.hの中の両方に2つの引数で宣言されています。
test2.c: In function ‘main’:
test2.c:27:5: error: too many arguments to function ‘test’
(*test)(array, size);
これは私がエラーを取得するビットがある:私はgcc -o test2 test2.c -ldl
コマンドを使用して私のテストプログラムをコンパイルすると、私はエラーを取得します.cファイルはvoid lib_fill_random(double *array, int size);
となり、それ自体では問題なく動作します。
この問題の原因は何ですか?
「void(* test)(void)」という宣言は、関数が引数を取らないことを意味します。 – Barmar
@Barmarだから、 'void(* test)(double *、int);'になるはずです。このようなばかげた質問には申し訳ありません、私はちょうど今dssymちょっと混乱していると思う... – COLOuRSLIDES
私はあなたが私の答えを見る前にそのコメントを書いたと思います。 – Barmar