問題を説明するために、いくつかの簡単な基本コードを作成しました。
header.h:
#ifdef __cplusplus
# define API extern "C"
#else
# define API
#endif
void callback();
API void libFunction();
testlib.c:
#include "header.h"
void libFunction()
{
Callback();
}
私はこれを次のような静的ライブラリとしてコンパイルします:
gcc -c testlib.c
ar rsc libtest.a testlib.o
次に、私のサンプルc++コードは
main.cpp:
extern "C"{
#include <lib/header.h>
}
#include <stdio.h>
main()
{
libFunction();
}
void Callback()
{
printf("Callback is called \n");
}
そして私は自分のexeファイルをそのように構築しようとします
g++ -I. -L. main.cpp -ltest
次のエラーが発生します
./lib/libtest.a(testlib.o): In function `libFunction':
testlib.c:(.text+0x7): undefined reference to `Callback'
collect2: ld returned 1 exit status
私は文字通り一日中、その理由を理解しようと努めてきました。誰か助けてもらえますか?