API.cpp:
int (*theFunc) (int);
theFunc = (int (*) (int)) DlSym(hSo, "theFunc");
ここまでは順調ですね。
ここで、他の cpp ファイルも theFunc を呼び出せるようにヘッダーを作成します。
Api.h: perヘッダーと c ファイルで関数ポインターを宣言する方法は?
extern int (*theFunc)(int);
/usr/bin/ld: 警告: Api.o でシンボル「theFunc」のタイプが 2 から 1 に変更されました
これは、theFunc が 1 つのコンパイル要素からは関数として、別の要素では変数として認識されるという警告です。 (参考)これは実行時に悪いことが起こりそうです。
これは適切な宣言のようですが、何が間違っていますか?
編集:実際にはLinuxで実行されているため、Microsoft GetProcAddress()呼び出しではなくDlSymを使用してください